Я пишу код для создания файла класса для моей таблицы времени выполнения, который будет включен в миграцию среды Entity.
В файле класса хотите узнать, как назначить CodeMemberFields в качестве первичного ключа или IDENTITY и т. Д.,
У меня есть этот код:
namespace EFCodeFirstTest
{
class GenClass
{
CodeCompileUnit CompileUnit;
CodeTypeDeclaration NewClass;
public GenClass(String Classname)
{
CompileUnit = new CodeCompileUnit();
CodeNamespace ns = new CodeNamespace("EFCodeFirstTest");
ns.Imports.Add(new CodeNamespaceImport("System"));
ns.Imports.Add(new CodeNamespaceImport("System.Collections.Generic"));
ns.Imports.Add(new CodeNamespaceImport("System.ComponentModel.DataAnnotations"));
ns.Imports.Add(new CodeNamespaceImport("System.ComponentModel.DataAnnotations.Schema"));
ns.Imports.Add(new CodeNamespaceImport("System.Data.Entity.Spatial"));
NewClass = new CodeTypeDeclaration(Classname);
NewClass.IsClass = true;
NewClass.TypeAttributes = TypeAttributes.Public | TypeAttributes.Sealed;
ns.Types.Add(NewClass);
CompileUnit.Namespaces.Add(ns);
}
public void AddColumns()
{
CodeMemberField mfield0 = new CodeMemberField(typeof(Int32), "RefNo");
mfield0.Attributes = MemberAttributes.Public;
mfield0.Type = new CodeTypeReference(typeof(Int32));
NewClass.Members.Add(mfield0);
}
public void CreateCS(String mfilename)
{
CodeDomProvider provider = CodeDomProvider.CreateProvider("CSharp");
CodeGeneratorOptions options = new CodeGeneratorOptions();
options.BracingStyle = "C";
options.BlankLinesBetweenMembers = false;
using (StreamWriter sw = new StreamWriter(mfilename))
{
provider.GenerateCodeFromCompileUnit(CompileUnit, sw, options);
}
}
}
}
Я называю это так:
GenClass objGenClass = new GenClass("Folio2");
objGenClass.AddColumns();
objGenClass.CreateCS(@"../../Models/Folio2.cs");
Выход:
namespace EFCodeFirstTest
{
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.Spatial;
public sealed class Folio2
{
public int RefNo;
}
}
Я хочу получить атрибут [Key] выше RefNo.
Как мне это сделать ?