EntityFramework6.0对枚举的支持/实体添加后会有主键反回

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

实验直接上代码,看结果

实体类

[Flags]publicenumFlagsEnum

{

Day=1,

Night=2}publicclassEntityWithEnum

{publicintID {get;set; }publicFlagsEnum ValidTime {get;set; }

}

数据库上下文

publicpartialclassCodeFirstModel : DbContext

{publicCodeFirstModel()

:base("name=CodeFirstModel")

{

}publicvirtualDbSet<EntityWithEnum> EntityWithEnum {get;set; }

}

Sql server LocalDb的连接字符串

<connectionStrings><addname="CodeFirstModel"connectionString="data source=(LocalDb)\MSSQLLocalDb;initial catalog=TestDb;integrated security=True;multipleactiveresultsets=True;applicationname=EntityFramework"PRoviderName="System.Data.SqlClient"/></connectionStrings>

主函数

staticvoidMain(string[] args)

{//CreateDatabaseIfNotExists//DropCreateDatabaseIfModelChanges//DropCreateDatabaseAlwaysDatabase.SetInitializer(newDropCreateDatabaseIfModelChanges<CodeFirstModel>());using(varcontext =newCodeFirstModel())

{

context.Database.Initialize(true);

}using(CodeFirstModel db =newCodeFirstModel())

{

EntityWithEnum entity=newEntityWithEnum() { ValidTime =FlagsEnum.Day };

db.EntityWithEnum.Add(entity);

entity=newEntityWithEnum() { ValidTime =FlagsEnum.Night };

db.EntityWithEnum.Add(entity);

entity=newEntityWithEnum() { ValidTime = FlagsEnum.Night|FlagsEnum.Day };

db.EntityWithEnum.Add(entity);

db.SaveChanges();

Console.WriteLine("{0}:\t{1}", entity.ID, entity.ValidTime);

Console.WriteLine("-------------------");varentitys =fromeindb.EntityWithEnumwheree.ValidTime.HasFlag(FlagsEnum.Day)selecte;foreach(variteminentitys)

{

Console.WriteLine("{0}:\t{1}", item.ID, item.ValidTime);

}

}

Console.ReadKey(true);

}

运行结果

结论Entity Framework 6.0 的 LINQ 是可以直接写 枚举的 HasFlags 方法的.

Add 的实体在 数据库保存后,会将数据库生成好的主键读出来.不用再写LINQ 再查一遍了.

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航