Код: Выделить всё
using head.de;
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace head.de
{
public class FilterWeighingTypes
{
[Required]
public int FilterWeighingTypeId { get; set; }
[Key]
[Required]
[StringLength( 50 )]
public char WeighingTypeName { get; set; }
}
}
< /code>
Мой код для компиляции выглядит так: < /p>
mdrModelReference.Add( MetadataReference.CreateFromFile( typeof( RequiredAttribute ).Assembly.Location ) );
mdrModelReference.Add( MetadataReference.CreateFromFile( typeof( Guid ).Assembly.Location ) );
mdrModelReference.Add( MetadataReference.CreateFromFile( typeof( Object ).Assembly.Location ) );
strModelContent = File.ReadAllText( model );
sxtModelSchema = CSharpSyntaxTree.ParseText( strModelContent );
cscCompiler = CSharpCompilation.Create(
model,
new[] { sxtModelSchema },
mdrModelReference,
new CSharpCompilationOptions( OutputKind.DynamicallyLinkedLibrary )
);
flsCompileStream = new FileStream( model + ".dll", FileMode.Create, FileAccess.Write );
emrCompileResult = cscCompiler.Emit( flsCompileStream );
< /code>
Этот код находится в одном и том же пространстве имен и фактически встроен в петлю Foreach и должен впоследствии собрать второй класс модели. Другой класс выглядит так: < /p>
using head.de;
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace head.de
{
public class FilterWeighings
{
[Key]
[Required]
public Guid FilterId { get; set; }
[Required]
public double WeighingValue { get; set; }
public string WeighingTypeName { get; set; }
[ForeignKey( "WeighingTypeName" )]
public FilterWeighingTypes FilterWeighingType { get; set; }
[Required]
public DateTime WeighingTime { get; set; }
}
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... ith-roslyn