Tag: entity framework

如何为名称中带空格的列创建复杂的数据类型?

我有一个存储过程,返回列名称中带有空格和短划线的列。 我不能简单地使用“获取列信息”按钮为该存储过程自动生成复杂类型。 如何处理字段名称中的空格和破折号,因为它们不是C#中字段名称的合法字符?

其中一个主键值的类型与实体中定义的类型不匹配。 请参阅内部exception了解详细信

我有以下方法: – public ActionResult CustomersDetails(string[] SelectRight) { var selectedCustomers = new SelectedCustomers { Info = SelectRight.Select(GetAccount) }; return View(selectedCustomers); } private AccountDefinition GetAccount(string id) { return entities.AccountDefinition.Find(id); } 但它返回以下错误: – The type of one of the primary key values did not match the type defined in the entity. See inner exception for details. 在return entities.AccountDefinition.Find(id); […]

尝试保存更新时,由于相同的主键而附加实体时出错

我试图保存对现有数据库条目的更新,但是当我这样做时,我收到错误: 附加“FFInfo.DAL.Location”类型的实体失败,因为同一类型的另一个实体已具有相同的主键值。 如果图中的任何实体具有冲突的键值,则在使用“附加”方法或将实体的状态设置为“未更改”或“已修改”时,可能会发生这种情况。 这可能是因为某些实体是新的并且尚未收到数据库生成的键值。 在这种情况下,使用“添加”方法或“已添加”实体状态来跟踪图形,然后根据需要将非新实体的状态设置为“未更改”或“已修改”。 这是我的控制器代码。 我正在使用的保存方法与我在其他几个方面使用的保存方法相同,可以毫无问题地更新数据。 [HttpPost, ValidateAntiForgeryToken] public ActionResult EditLocation(AddEditLocationVM model, HttpPostedFileBase MapFile) { try { using (var db = new GeographyContext()) { model.Sections = new SelectList(db.Sections.Where(s => s.ID > 1).OrderBy(s => s.Title), “ID”, “Title”).ToList(); model.GeographyTypes = new SelectList(db.GeographyTypes.Where(gt => gt.SectionID == model.Section).OrderBy(gt => gt.Name), “ID”, “Name”).ToList(); model.ParentLocations = new SelectList(db.Locations.Where(l => l.SectionID […]

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(); […]

C#Entity Framework 4公共语言运行时检测到无效的程序错误?

如何调试/修复“公共语言运行时检测到无效程序”错误? 究竟到底是什么意思? 我有一个C#MVC 2 Web应用程序,可以部署到位于同一IIS 7.5 Web服务器(x64)上的两个网站。 一个是实时站点(使用Release配置部署),第二个是beta站点(使用仅为此项目创建的新Beta配置部署)。 这两个网站是: Default Website/my_app Beta/my_app 在测试网站上选择分页的采购订单时,它会抛出“检测到无效程序”exception。 在现场网站上运行完全相同的代码完美无缺。 为什么要这样做? 编辑:我在服务器上安装了Visual Studio,并找到导致问题的实际行和堆栈跟踪: var list = ObjectContext.ObjectSet.AsQueryable(); int totalRecords = list.Count(); var paged = list.Skip((page > 0 ? page – 1 : 0) * rows).Take(rows); 这是带有堆栈跟踪的exception消息: {System.InvalidProgramException: Common Language Runtime detected an invalid program. at System.Data.Entity.DynamicProxies.PurchaseOrderListVie_96479BFE9FA60F4C53137C56C1A1B2A11D90FF5AFFDC20383CC68E0A750792E3.set_Total(Decimal ) at lambda_method(Closure , Shaper […]

entity framework:Database.ExecuteSqlCommand方法

所以,我有一个基本的更新声明,我在我的MVC 4应用程序中运行。 我这样称呼它(SQL Server 2008 R2,Entity Framework 5.0): var requestData = requestInfo.Database.ExecuteSqlCommand(“UPDATE TABLE Blah.. “); 命令成功完成,但有时requestData返回1,有时返回2.我找不到任何文档或解释这些返回值的含义。 我看过这里: http://msdn.microsoft.com/en-us/library/gg679456(v=vs.103).aspx 但是,它没有给出任何明确的答案。 如果有人可以链接到解释此命令返回值的内容,我将非常感激。

Linq-to-Entities离开JOIN

这是我的查询: from forum in Forums join post in Posts on forum equals post.Forum into postGroup from p in postGroup where p.ParentPostID==0 select new { forum.Title, forum.ForumID, LastPostTitle = p.Title, LastPostAddedDate = p.AddedDate }).OrderBy(o=>o.ForumID) 目前,Join不是左连接,这意味着如果某个论坛没有属于它的post,则不会返回。 没有post的论坛必须返回post属性的null(或默认)值。 UPDATE 结果集应该是这样的: ForumId | ForumTitle | LastPostTitle | LastPostAddedDate ——–+————+—————+—————— 4 | Sport | blabla | 12/4/2010 4 | Sport […]

重新附加实体图并检测集合更改

我首先使用实体​​框架代码并通过WCF REST HTTP接口公开northwind数据库。 我没有公开OrderDetails表(订单商品),因为创建订单然后通过另一个服务分别添加每个必需的OrderDetail是没有意义的。 在我看来,它需要是一个成功或失败的primefaces事务。 因此,我在传递给客户端时包含Order.OrderDetails集合,并假设在创建或更新订单时我将获得一个。 然而,问题似乎是在重新附加Order实体以进行更新时检测OrderDetails集合的更改。 订单本身可以设置为已修改以更新这些属性,但这不会级联到OrderDetail项目。 所以我可以手动完成并设置更新的修改后的问题,但问题在于弄清楚哪些是最初更新的。 将新的OrderDetail设置为modified会在尝试保存时导致错误。 我读了一条建议,将新集合项的Id设置为0,并在服务器中使用它来决定它是新的还是现有的。 然而,Northwind在OrderDetails的OrderID和ProductID之间使用复合键。 这些都必须由客户端设置,所以我找不到一种方法来检测新的。 此外,分离图中不存在已删除的OrderDetail,我需要弄清楚已删除的内容并明确删除它。 任何建议将不胜感激。 public override Order Update(Order entity) { dbset.Attach(entity); DataContext.Entry(entity).State = EntityState.Modified; foreach (var orderDetail in entity.OrderDetails) { DataContext.Entry(orderDetail).State = EntityState.Modified; } return entity; }

使用扩展方法的entity framework分页很慢?

我在C#中的entity framework中查询速度有问题。 我创建了一个名为Page的扩展方法来处理分页,但是当我使用它时,查询变得非常慢。 如果我只是做.Skip(page.Value * pageSize.Value).Take(pageSize.Value)而不是使用Page,查询得到的速度要快得多。 我想在使用Page时,在分页之前获取所有联系人。 有没有办法防止这种情况或我做错了什么? 查询: var contacts = db.Contacts .Where(x => x.AccountID == accountID && x.Deleted == false) .OrderByDescending(x => x.FirstName) .ThenBy(x => x.LastName) .ThenBy(x => x.CreatedDate) .Page(page, pageSize); return contacts.ToList(); 扩展方法: public static IEnumerable Page(this IEnumerable elements, int? page, int? pageSize) { if (page.HasValue && pageSize.HasValue) return elements.Skip(page.Value * pageSize.Value).Take(pageSize.Value); […]

如何解决“内部.NET Framework数据提供程序错误1025”。

我首先使用Entity Framework 4.3,POCO,数据库,我收到以下错误: 内部.NET Framework数据提供程序错误1025。 问题: 我认为我的查询表达了我的意图,但我似乎遇到了这个错误,所以我想知道是否有人知道如何以不同的方式构建我的查询来解决这个错误? 这是场景…… 我有一个SQL Server 2008数据库,有2个表–A和B: 一个 AId(int – not null – identity – primary key) AName(nvarchar(10) – not null) 乙 BId(int – not null – identity – primary key) SomeName(nvarchar(10) – not null) AId(int – not null – 连接到表A中的AId的外键) 然后我像这样定义上下文: public class DatabaseContext : DbContext { public DatabaseContext(string name) […]