Tag: entity framework

entity framework创建与现有实体关系的新实体,导致尝试创建现有实体的新副本

我正在尝试创建具有特定角色的新用户对象。 “角色”是EF中的现有实体。 我用谷歌搜索了一下,然后堆栈溢出,直到我脸色发青,我已经尝试了所有似乎对其他人都有效的东西。 但是当我尝试保存我的新用户对象时,它首先尝试创建一个新的“角色”,而不是仅仅通过引用现有角色来创建新的用户对象。 我究竟做错了什么? Role myRole = new Role { ID = myUser.Role.ID }; myObjectContext.Roles.Attach(myRole); myUser.Role = myRole; if (myUser.ID == 0) { myObjectContext.Users.AddObject(myUser); } else { if (myUser.EntityState == System.Data.EntityState.Detached) { myObjectContext.Users.Attach(myUser); } myObjectContext.ObjectStateManager.ChangeObjectState(myUser, System.Data.EntityState.Modified); } myObjectContext.SaveChanges(SaveOptions.None); 编辑 – 更多测试后…… 好吧..所以我无论如何都发现了“原因”的某些部分。 我仍然不知道为什么会这样做并需要帮助。 基本上,我附加到我的新User对象有两组数据。 一个是“角色”,它是包含角色的角色表的FK。 这显示为User上的导航属性,如“User.Role”。 第二组数据是称为“FIPS”的对象集合,它们是用户与另一个名为FIPS的表之间的多对多关系。 它们之间有一个关系表,它只包含两列,每列分别是User和FIPS的外键。 用户的FIPS也是一个引用属性,引用类似“User.FIPS”。 以下是显示在保存上下文之前将FIPS和角色分配给User对象的完整代码。 List fipsList = new […]

Entity Framework数据库中的存储过程第一种方法

我正在使用Entity Framework数据库第一种方法进行从Webforms到MVC应用程序的项目转换,并准备好数据库以及所有存储过程。 我成功创建了一个.edmx文件,并且能够使用我的存储过程,并且在执行任何插入或更新操作时它工作得很好。 但是当我在我的一个存储过程中使用select查询时出现了真正的问题。 例如,有一个Employee表,其中包含以下列: EmpId, FirstName, LastName, Age, Salary 我有一个存储过程GetAllEmpDetails有以下选择查询。 Select EmpId, (FirstName + ‘ ‘ + LastName) as FullName, Salary from Employee 现在,当我尝试将此存储过程的结果与根据表结构具有5个属性的Employee类绑定时,我得到一个错误,即Age属性的值是预期的,但它在结果集中不可用。 我知道也没有FullName属性,所以我的问题是如何用生成的模型类解决这个问题(在本例中是Employee ),以便它可以解决这些动态问题?

重写LINQ表达式查询以启用缓存SQL执行计划

在阅读有关entity framework性能的文章时,我发现了这条信息: 其次,问题[SQL Server不会重用执行计划]首先发生因为(由于实现细节)将int传递给Skip()和Take()方法,Entity Framework无法查看是否它们传递的绝对值如Take(100)或变量如Take(resultsPerPage),因此它不知道该值是否应该参数化。 建议的解决方案是改变这种代码风格: var schools = db.Schools .OrderBy(s => s.PostalZipCode) .Skip(model.Page * model.ResultsPerPage) .Take(model.ResultsPerPage) .ToList(); 在这种风格: int resultsToSkip = model.Page * model.ResultsPerPage; var schools = db.Schools .OrderBy(s => s.PostalZipCode) .Skip(() => resultsToSkip) //must pre-calculate this value .Take(() => model.ResultsPerPage) .ToList(); 这允许entity framework知道这些是变量,并且生成的SQL应该被参数化,这反过来允许重用执行计划。 我们的应用程序中有一些代码以相同的方式使用变量,但我们必须在运行时构建Expression,因为事先不知道类型。 以下是它过去的样子: var convertedId = typeof(T).GetConvertedIdValue(id); var prop = GetIdProperty(typeof(T)); […]

在代码第一entity framework中将DbContext转换为Datatable

您好我正在尝试将DbContext结果转换为DataTable 。 我有一个class即inherits DbContext ClientTemplateModel 。 在这个类中,我有一个DbSet对象,即public virtual DbSet ImageComments { get; set; } public virtual DbSet ImageComments { get; set; } public virtual DbSet ImageComments { get; set; } 。 我正在使用Code第一个entity framework 。 这是我的查询。 using (ClientTemplateModel context = new ClientTemplateModel(connectionString)) { var result = context.ImageComments.Where(p => p.Dcn == dcn).OrderByDescending(p => p.CommentsDateTime); } 在这里,我想将result转换为DataTable 。 […]

使用ExpressionVisitor排除连接中的软删除记录

我有一个框架,在数据库中实现软删除(Nullable DateTime称为DeletedDate)。 我正在使用Repository来处理主要实体请求,如下所示: /// /// Returns a Linq Queryable instance of the entity collection. /// public IQueryable All { get { return Context.Set().Where(e => e.DeletedDate == null); } } 这很好用,但我遇到的问题是当你包含导航属性时,以及如何确保只查询活动记录。 有问题的存储库方法如下所示: /// /// Returns a Linq Queryable instance of the entity collection, allowing connected objects to be loaded. /// /// Connected objects to be included […]

如何在Entity Framework中指定索引提示?

SQL select * from table1 with(index=IX_table1_1) Linq to sql使用ado.net实体想编写上面的代码。 我特别找不到实体,使用索引。 LINQ var querysample = from a in db.table1 select a;

entity framework子查询

伙计我是Entity Framework的新手,我遇到了一个问题,我一直试图解决这个问题。 基本上我有4个实体:用户,组,书籍和阅读列表。 用户可以加入组,组可以包含由readingList定义的书籍。 我正在尝试显示特定组的书籍列表,SQL如下所示: SELECT * FROM Books b WHERE b.Id IN ( SELECT BookID FROM ReadingList rl WHERE rl.GroupID = ‘3’) 我通过从UserRepository查询当前用户来确定要搜索的GroupID,目前“按组获取书籍”方法如下所示: // Get books by group public IQueryable GetGroupBooks(string username) { UserRepository userRepository = new UserRepository(); int groupId = userRepository.GetUserGroupId(username); IQueryable q = from b in entities.Books where b.Id == 7 // […]

在VS 2015和EF7上从模型生成SQLite数据库

我正在尝试使用Entity Framework 7和SQLite数据库文件制作Windows Presentation Foundation应用程序。 我已经制作了* .edmx模型,但在尝试生成模型时我无法进行SQLite连接。 从https://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki尝试了一切,但没有任何帮助,仍然没有创建正确连接的选项。 已经有类似的问题 – VS 2015 SQLite数据提供商 – 但几个月前。 有什么改变吗? 有没有办法将VS2015上的EF7连接到SQLite?

使用entity framework将文件保存在数据库中

我有一个基于Entity Framework和Microsoft SQL Server 2008的ASP.NET MVC解决方案。我需要创建一个允许我的用户上传文件的function。 我想要的是: 使用entity framework在数据库中存储文件的解决方案 一种解决方案,可以检测并阻止通过某种散列/校验和上载同一文件两次 关于数据库/表格设计的提示

使用Code First EF4.1进行保存时,如何向属性添加默认值?

我开始创建这样的模型: public abstract class EditableBase { public DateTime CreatedOn { get; set; } public DateTime ModifiedOn { get; set; } public int CreatedBy { get; set; } public int ModifiedBy { get; set; } } public class Project : EditableBase { public int ProjectId { get; set; } public string ProjectName { get; set; } […]