.net - Entity Framework 4 错误 : Unable to update the EntitySet because it has a DefiningQuery

标签 .net entity-framework entity-framework-4

好的,这是场景。我有3张 table 。一个称为 aspnet_Users 一个称为 Categories 和一个称为 User_Categories 的链接表。 aspnet_Users 和 Categories 都有主键(分别是 UserId 和 ID)。链接表只有两列:CategoryID 和 UserId,每列都设置了外键关系,并且我为 User_Categories 上的两列设置了唯一键。这在 aspnet_Users 表和 Categories 表之间建立了多对多关系。我从这个数据库设置中生成了我的实体 edmx 文件,一切看起来都很完美,几乎适用于所有操作。

我想要做的是从表单中添加一个新类别(它本身可以完美工作),同时,将特定用户与新提交的类别相关联。当我尝试这样做时,我的主题行中出现错误。这是我用来尝试此操作的代码(ctx 是我的实体上下文对象):

public ActionResult Create(Category category, Guid userId)
{
    aspnet_Users user = ctx.aspnet_Users.SingleOrDefault(x => x.UserId == userId);
    ctx.Categories.AddObject(category);
    user.Categories.Add(category);
    ctx.SaveChanges();;
    return RedirectToAction("Index");
}

为什么这不起作用?

最佳答案

我假设完整的异常消息类似于:

Unable to update the EntitySet YourTableName because it has a DefiningQuery and no InsertFunction element exists in the ModificationFunctionMapping element to support the current operation.



如果您的数据库表没有定义主键,就会发生这种情况。

将主键添加到您的表中(使用 SQL Server Management Studio 或其他工具),并更新您的 .edmx数据库中的模型。

关于.net - Entity Framework 4 错误 : Unable to update the EntitySet because it has a DefiningQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3471331/

相关文章:

c# - 加入两个 IQueryable

entity-framework - DB2 Entity Framework

entity-framework - 为什么 Entity Framework 将实体生成为部分类?

entity-framework-4 - EF4 : Difference between POCO , self 跟踪实体,POCO 代理

c# - 如何使用 C# 将从 Azure Blob 获取的内容解析为 Dictionary<string,dynamic>?

c# - IEnumerable<T> 作为 WCF 方法的返回类型

c# - 为什么 Database.Log 不是一个事件?

C# EPPLUS Chart SetPosition 方法行偏移不起作用

c# - 如何修复 Entity Framework 中的 system.data 配置问题

mysql - Entity Framework - 插入相关表