如何使用动态数据插入外键

时间:2011-03-21 00:11:51

标签: asp.net entity-framework-4 asp.net-dynamic-data

我遇到外键动态数据和实体框架4.0的问题。感觉实体协会存在问题,但我不确定。我有多个字段表示插入页面上的外键。当我尝试插入数据时,我得到一个错误ReferentialConstraint中的依赖属性被映射到存储生成的列。  专栏:'CommentId'

我的数据是一个非常基本的一对多关系,有问题的外键是注释表中的BookId。

图书

  • BOOKID
  • BookHref

评论

  • CommentId
  • 用户
  • 注释
  • BOOKID

我使用以下sql脚本创建FOREIGN KEY。

ALTER TABLE [dbo].[Comments]  WITH CHECK ADD  CONSTRAINT [FK_Comments_Books] FOREIGN KEY([CommentId])
REFERENCES [dbo].[Books] ([BookId])

实体框架生成以下XML

<EntityType Name="Books">
  <Key>
    <PropertyRef Name="BookId" />
  </Key>
  <Property Name="BookId" Type="int" Nullable="false" StoreGeneratedPattern="Identity" />
  <Property Name="Title" Type="nvarchar" Nullable="false" MaxLength="255" />
  <Property Name="Description" Type="nvarchar" Nullable="false" MaxLength="2000" />
  <Property Name="Abstract" Type="nvarchar" />
  <Property Name="UserName" Type="nvarchar" Nullable="false" MaxLength="255" />
  <Property Name="Image" Type="varbinary(max)" />
  <Property Name="BookContent" Type="varbinary(max)" />
  <Property Name="rowguid" Type="uniqueidentifier" Nullable="false" />
  <Property Name="CreateDate" Type="datetime" />
  <Property Name="ModifiedDate" Type="datetime" />
</EntityType>
<EntityType Name="Comments">
  <Key>
    <PropertyRef Name="CommentId" />
  </Key>
  <Property Name="CommentId" Type="int" Nullable="false" StoreGeneratedPattern="Identity" />
  <Property Name="UserName" Type="nvarchar" Nullable="false" MaxLength="255" />
  <Property Name="UserComment" Type="nvarchar" Nullable="false" />
  <Property Name="BookId" Type="int" Nullable="false" />
</EntityType>
<Association Name="FK_Comments_Books">
  <End Role="Books" Type="BookStoreModel.Store.Books" Multiplicity="1" />
  <End Role="Comments" Type="BookStoreModel.Store.Comments" Multiplicity="0..1" />
  <ReferentialConstraint>
    <Principal Role="Books">
      <PropertyRef Name="BookId" />
    </Principal>
    <Dependent Role="Comments">
      <PropertyRef Name="CommentId" />
    </Dependent>
  </ReferentialConstraint>
</Association>

当我让脚手架做它的东西时,我得到多个代表外键的字段 Dynamic Data Output for Comments

1 个答案:

答案 0 :(得分:0)

我相信FK应该是:

ALTER TABLE [dbo].[Comments]  WITH CHECK 
ADD  CONSTRAINT [FK_Comments_Books] FOREIGN KEY([BookId])
REFERENCES [dbo].[Books] ([BookId])

您在CommentId上对其进行了定义,这会在CommentBook之间创建1:1关系,并且BookId中的Comment列根本不会被使用。