草庐IT

Entity-Framework

全部标签

c# - Entity Framework 包含命令 - 左连接还是内连接?

当我研究Include和Join之间的区别时,我发现:如果DB不包含外键-它没有导航Prop,所以最好使用Join如果它确实有一个导航Prop——然后使用Include。(它还可以节省数据库命中率。)但是一个answerhere引起了我的注意:Includeisimplementedasajoin.Dependingonthenullabilityoftheincludedlinkitisaninnerorleftjoin.问题:空值如何影响左/内连接?在Sql服务器中,我可以有一个Cities表和一个Persons表,一个人可以有一个NULLCityID.为什么EntityFrame

c# - Entity Framework 6 Code First 函数映射

我想将EntityFramework6集成到我们的系统中,但遇到了问题。我想使用CodeFirst。由于其他原因,我不想使用DatabaseFirst*.edmx文件。我使用属性映射[Table]、[Column],效果很好数据库有很多用户定义的函数,我需要在LinqToEntities查询中使用它们。问题是:我无法通过[Table]、[Column]等属性映射函数。只有1个属性可用[DbFunction],需要*.edmx文件。我可以在*.edmx文件中进行函数映射,但这意味着我不能对实体使用属性映射:[Table]、[Column]。*.edmx或属性中的映射必须完整。我尝试通过以

c# - Entity Framework 6 Code First 函数映射

我想将EntityFramework6集成到我们的系统中,但遇到了问题。我想使用CodeFirst。由于其他原因,我不想使用DatabaseFirst*.edmx文件。我使用属性映射[Table]、[Column],效果很好数据库有很多用户定义的函数,我需要在LinqToEntities查询中使用它们。问题是:我无法通过[Table]、[Column]等属性映射函数。只有1个属性可用[DbFunction],需要*.edmx文件。我可以在*.edmx文件中进行函数映射,但这意味着我不能对实体使用属性映射:[Table]、[Column]。*.edmx或属性中的映射必须完整。我尝试通过以

c# - 不需要的十进制截断

我的模型:publicclassProduct{...publicdecimalFineness{get;set;}...}播种数据库:newList{newProduct{...,Fineness=0.757M,...},newProduct{...,Fineness=0.674M,...},newProduct{...,Fineness=0.475M,...}}.ForEach(p=>context.Products.Add(p));查询数据库以测试播种:varproducts=db.Products.ToList();foreach(varpinproducts){S.D.Deb

c# - 不需要的十进制截断

我的模型:publicclassProduct{...publicdecimalFineness{get;set;}...}播种数据库:newList{newProduct{...,Fineness=0.757M,...},newProduct{...,Fineness=0.674M,...},newProduct{...,Fineness=0.475M,...}}.ForEach(p=>context.Products.Add(p));查询数据库以测试播种:varproducts=db.Products.ToList();foreach(varpinproducts){S.D.Deb

c# - 更新实体列表的有效方法

我正在开发一个允许用户编辑实体列表的项目。我将这些实体映射到View模型并使用编辑器字段显示它们。当用户按下提交按钮时,我会遍历每个模型并像这样更新它:foreach(varviewModelinviewModels){//Findthedatabasemodelandsetthevalueandupdatevarentity=unit.EntityRepository.GetByID(fieldModel.ID);entity.Value=viewModel.Value;unit.EntityRepository.Update(entity);}上面的代码有效,但是如您所见,我们需要

c# - 更新实体列表的有效方法

我正在开发一个允许用户编辑实体列表的项目。我将这些实体映射到View模型并使用编辑器字段显示它们。当用户按下提交按钮时,我会遍历每个模型并像这样更新它:foreach(varviewModelinviewModels){//Findthedatabasemodelandsetthevalueandupdatevarentity=unit.EntityRepository.GetByID(fieldModel.ID);entity.Value=viewModel.Value;unit.EntityRepository.Update(entity);}上面的代码有效,但是如您所见,我们需要

c# - 使用 DbContext Set<T>() 而不是在上下文中公开

执行以下操作时是否存在任何差异:publicclassUsersContext:DbContext{publicDbSetUsers{get;set;}}与使用Set相比上下文的方法:publicclassUsersContext:DbContext{}vardb=newUsersContext();varusers=db.Set();这些有效地做同样的事情,给我一组用户,但是除了你没有通过属性公开该组之外,还有什么大的区别吗? 最佳答案 Users属性是为了方便而添加的,因此您无需记住所有表是什么以及对应的类是什么,您可以使用In

c# - 使用 DbContext Set<T>() 而不是在上下文中公开

执行以下操作时是否存在任何差异:publicclassUsersContext:DbContext{publicDbSetUsers{get;set;}}与使用Set相比上下文的方法:publicclassUsersContext:DbContext{}vardb=newUsersContext();varusers=db.Set();这些有效地做同样的事情,给我一组用户,但是除了你没有通过属性公开该组之外,还有什么大的区别吗? 最佳答案 Users属性是为了方便而添加的,因此您无需记住所有表是什么以及对应的类是什么,您可以使用In

c# - 首先了解 Entity Framework 代码中的 ForeignKey 属性

有关一些背景,请参阅以下帖子:Entityframeworkonetozerooronerelationshipwithoutnavigationproperty我一直认为ForeignKey用于显示类中的哪个属性拥有确定导航属性的ForeignKey,例如publicclassMemberDataSet{[Key][DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]publicintId{get;set;}publicint?DeferredDataId{get;set;}[ForeignKey("Deferre