首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Visual 2010 +实体框架4: UpdateException on SaveChanges

Visual 2010 +实体框架4: UpdateException on SaveChanges
EN

Stack Overflow用户
提问于 2011-06-29 18:34:51
回答 1查看 541关注 0票数 0

在对VS2010 SP1未发布的修补程序的测试进行了大量的研究和联系之后(我以为我已经碰到了这个bug:http://connect.microsoft.com/VisualStudio/feedback/details/505178/storegeneratedpattern-property-in-ado-net-entity-model-designer-sets-cdsl-annotation-but-not-ssdl-attribute),我想我会和您分享这个。

本质上,我的实体模型设计器似乎工作得很好,因为它为ID属性的StoredGeneratedPattern字段(在edmx文件的SSDL和CSDL区域中)添加了标识值,但是,当我从一个简单的应用程序中调用context.SaveChanges()来测试EF设置时,我得到了一个UpdateException,它包含以下InnerException (在UpdateException对象的任何地方都可以找到唯一有意义的文本):

不支持对主键列属性“'ConfigurationManagerServiceEntityDataModel.Store.ServiceConfigurationItems'."}”设置为“计算”的表进行修改。请使用“标识”模式。键列:“Id”。表:

然而,这是完全不可能的,因为计算在整个解决方案中是找不到的。

我多次从模型中重新生成数据库,并检查了下的SQL以及由此产生的表结构和列属性,一切看起来都很好。

为了进一步参考,下面是异常所引用的特定模型对象edmx规范:

SSDL:

代码语言:javascript
复制
<EntityType Name="ServiceConfigurationItems">
    <Key>
      <PropertyRef Name="Id" />
    </Key>
    <Property Name="Id" Type="int" StoreGeneratedPattern="Identity" Nullable="false" />
    <Property Name="ItemName" Type="nvarchar(max)" Nullable="false" />
    <Property Name="ParentCategoryName" Type="nvarchar(max)" Nullable="false" />
    <Property Name="VicimusService_Id" Type="int" Nullable="false" />
</EntityType>

CSDL:

代码语言:javascript
复制
<EntityType Name="ServiceConfigurationItem">
          <Key>
            <PropertyRef Name="Id" />
          </Key>
          <Property Type="Int32" Name="Id" Nullable="false" a:StoreGeneratedPattern="Identity" xmlns:a="http://schemas.microsoft.com/ado/2009/02/edm/annotation" />
          <Property Type="String" Name="ItemName" Nullable="false" />
          <Property Type="String" Name="ParentCategoryName" Nullable="false" />
          <NavigationProperty Name="VicimusService" Relationship="ConfigurationManagerServiceEntityDataModel.VicimusServiceConfigurationItem" FromRole="ConfigurationItem" ToRole="VicimusService" />
          <NavigationProperty Name="ConfigurationItemDetails" Relationship="ConfigurationManagerServiceEntityDataModel.ServiceConfigurationItemConfigurationItemDetails" FromRole="ServiceConfigurationItem" ToRole="ConfigurationItemDetails" />
        </EntityType>

此表的SQL生成如下:

代码语言:javascript
复制
-- Creating table 'ServiceConfigurationItems'
CREATE TABLE [dbo].[ServiceConfigurationItems] (
    [Id] int IDENTITY(1,1) NOT NULL,
    [ItemName] nvarchar(max)  NOT NULL,
    [ParentCategoryName] nvarchar(max)  NOT NULL,
    [VicimusService_Id] int  NOT NULL
);
GO

在这一点上,我不知道问题可能是什么。

任何帮助都将不胜感激!

在此之前,非常感谢您。

EN

回答 1

Stack Overflow用户

发布于 2011-06-30 21:38:15

好吧,我从头开始再做一次,这个问题似乎不再发生了。

感谢你们大家花时间阅读了这篇文章!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6525534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档