Tag: entity framework 5

EntityState.Deleted不起作用,Remove(entity)呢?

我在尝试读取记录时一直在与EF斗争,然后在同一个事务中删除这些记录。 我最初使用的是EntityState.Deleted方法,它会产生错误: 操作失败:无法更改关系,因为一个或多个外键属性不可为空。 当对关系进行更改时,相关的外键属性将设置为空值。 如果外键不支持空值,则必须定义新关系,必须为外键属性分配另一个非空值,或者必须删除不相关的对象。 但是如果我把它改成我下面的那个,使用.Remove(),那么一切都很好。 有什么区别和最佳使用时间.Remove()vs .Deleted? 我怎么能使用.Deleted方法来完成这项工作? 我已经尝试创建一个新的上下文实例到我的存储库读取和另一个删除,但后来得到的错误与IEntityTracker无法跟踪多个实例…我也试过.Include在初始读取时加载依赖记录进入EF所以它知道并删除它们。 我也尝试过。先读取读取记录。 一切都无济于事。 这是有问题的方法。 请注意,我确实有一个使用.Deleted方法的通用存储库,该方法在此方案之前一直很好用(读取然后删除相同的记录。) //Delete Allocation Need and AllocatedContainers for alloc need id public ActionConfirmation DeleteAllocRecords(int intFacilityId, AllocNeedSourceTypes needSourceType, int intNeedSourceId) { var context = new InventoryMgmtContext(); var repository = new AllocationNeedRepository(context); //Delete Allocation Need and hence children in Allocated Containers var srcType = needSourceType.ToString(); […]

entity framework可以在没有交集对象的情况下处理多对多关系吗?

使用数据库第一模型:假设我们有经典表格Student , Course和StudentCourse (后者显然有FKs给Student和Course )。 如果将此模型导入EF,您将获得为每个模型生成的对象。 Student和Course课程将分别包含一系列Student Course ,您需要跳过另一个关系,分别到达Course或Student 。 我希望生成的代码能够使底层交集表不可见,即Student有一个Courses集合, Course有一个Student集合。 我在其他ORM软件(特别是TopLink )中看到了这一点。 可以在EF中完成吗?

AutoMapper.dll中出现“AutoMapper.AutoMapperMappingException”类型的例外,但未在用户代码中处理

不知何故,我的代码不再起作用(它之前使用完全相同的代码工作)。 这就是问题: 代码 我正在尝试使用以下代码将一些对象映射到ViewModels: 组态: Mapper.CreateMap() .ForMember(x => x.Title, opt => opt.MapFrom(src => src.Book.Title)) .ForMember(x => x.Authors, opt => opt.MapFrom(src => src.Book.Authors.Select(x => x.Name).Aggregate((i, j) => i + “, ” + j))) .ForMember(x => x.Identifiers, opt => opt.MapFrom(src => (!string.IsNullOrEmpty(src.Book.Isbn10) ? (“ISBN10: ” + src.Book.Isbn10 + “\r\n”) : string.Empty) + (!string.IsNullOrEmpty(src.Book.Isbn13) ? (“ISBN13: ” + […]

我应该如何禁用每个对象的Entity Framework表引用(外部)列表?

我正在使用Sqlite数据库和System.Data.SQLite 1.0.92这里有2个表: 表人 : PERSONID PERSONNAME 表学生 : 学生卡 PersonId(参考表人FK) StudentNo 现在每次我在EF5中获得Persons Collection: using (var ctx = new myEntities) { AllPersons = ctx.Persons.ToList(); } 还有AllPersons.student集合将包含在结果中; 但我不需要它。 当然这只是一个例子,有很多大表有这么多的引用,因此它总是存在性能问题。 所以我试图不让它出现在我的结果中。 所以我改变它: using (var ctx = new myEntities) { ctx.Configuration.ProxyCreationEnabled = false; ctx.Configuration.LazyLoadingEnabled = false; AllPersons= ctx.Persons.ToList(); } 现在很好,因为AllPersons.student集合将始终为null 但现在我发现:如果我把人和学生放在一起 : using (var ctx = new myEntities) { […]

自定义SimpleMembership

在阅读了关于向UserProfile表添加自定义数据的好BLOG之后,我想以UserProfile表应该存储默认数据的方式更改它+另一个存储所有其他信息的类。 使用Interenet应用程序模板创建新项目后,我创建了两个类: Student.cs [Table(“Student”)] public class Student { [Key] [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] public virtual int StudentId { get; set; } public virtual string Name { get; set; } public virtual string Surname { get; set; } public virtual int UserId { get; set; } } UserProfile.cs [Table(“UserProfile”)] public class UserProfile { [Key] [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] public int UserId { […]

entity framework5.0b2代码优先:同一个表的一对多和一对一,WITH Cascade Delete

经过几个小时的试验和错误,我到达了这个线程 ,解释了如何建立一对多关系和一对一关系与相同的两种类型。 但是,我无法使用Cascade Delete: 抛出:“无法确定依赖操作的有效排序。由于外键约束,模型要求或存储生成的值,可能存在依赖关系。” (System.Data.UpdateException)exception消息=“无法确定依赖操作的有效排序。由于外键约束,模型要求或存储生成的值,可能存在依赖关系。”,Exception Type =“System.Data.UpdateException “ 只有当我没有取消设置1:1关系时才会发生这种情况(参见下面的代码),我认为这会产生无效的引用。 我只是想知道是否有更好的方式来表示这一点。 示例代码: class Program { static void Main(string[] args) { Database.SetInitializer(new DropCreateDatabaseAlways()); using (var ctx = new Context()) { var user = new User(); ctx.Users.Add(user); ctx.SaveChanges(); var source = new PaymentSource(); user.PaymentSources = new Collection(); user.PaymentSources.Add(source); user.DefaultPaymentSource = source; ctx.SaveChanges(); // if I don’t do […]

JSON.NET DataContractJsonSerializer和Newtonsoft JSON序列化程序有什么区别

有人能帮我吗。 内置的JSON.NET DataContractJsonSerializer和Newtonsoft JSON序列化程序之间有什么区别? 我可以在Web API中使用其中一个是正确的,为什么我会选择一个?

如何检查unit testing在ORM模型中计算的属性标记?

我是由Entity Framework 5.0(C#4.5)创建的ORM – 数据库优先。 实体的一些属性我被标记为计算(绑定到具有默认值的列)。 如何检查unit testing在ORM模型中计算的属性标记? 注意:在ORM中紧急重新创建实体后,需要测试控制计算属性。 * .edmx中的实体描述:

entity framework部分加载

我的表格中有以下列 Id(int) 名称(nvarchar)通常<100个字符 数据(nvarchar)平均为1MB 我正在编写一个程序,它将遍历每一行并对Name字段执行一些操作。 由于我只使用Name字段并且Data字段非常大,是否可以指示EF仅加载Id和Name字段?

修改DAL,System.ArgumentException时出错,“已存在具有相同密钥的条目”

好吧,我完全被这个难倒了。 我可能没有足够的信息在这里发布,但我甚至不知道从哪里开始寻找。 我正在尝试在DAL.edmx文件上“从数据库更新模型”。 我将一个字段包含在之前未包含的视图中。 我尝试刷新,然后我尝试重命名数据库中的视图并从DAL中删除视图,以便我可以重新添加它。 我有两次 接下来,我无缘无故地尝试将我重命名的视图添加到DAL中,得到了相同的exception。 从DAL.tt手动删除没有帮助。 谷歌搜索问题,只有2个不相关的结果。 我不知道哪里开始寻找。 我没有写它,但这里是视图的源sql(如果它有帮助)。 EF不会添加重命名的视图这一事实暗示它可能与SQL有关吗? SQL在mngmnt studio中运行良好。 SELECT ID, IssueID, IssueTypeID, IssueText, IssueCreateDate, WeekendDate, CustomerName, Employee, CONVERT(DECIMAL(6, 2), AdjustedTotalRHours, 101) AS AdjustedTotalRHours, AdjustedTotalOHours, AdjustedTotalRHours + AdjustedTotalOHours AS Hours, InvoiceNumber, AdjustedInvoiceAmount, COALESCE ((SELECT SUM(InvoiceAmount) AS Expr1 FROM TrendingDataFinal AS I1 WHERE (InvoiceNumber = T1.InvoiceNumber) AND (CompanyID = T1.CompanyID) AND […]