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; }
}
}
Выполнение этого кода генерирует ошибку CS8203 и CS0246 для FilterWeighingTypes .
Я хочу динамически компилировать классы моделей для моего приложения EF Core.[code]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; }
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; } } } [/code] Выполнение этого кода генерирует ошибку CS8203 и CS0246 для FilterWeighingTypes .