gpt4 book ai didi

.net - 为什么这个 Entity Framework 代码没有保存到数据库?

转载 作者:行者123 更新时间:2023-12-01 05:43:40 24 4
gpt4 key购买 nike

每个类型 Entity Framework 4.0 模型都有一个简单的表:-
alt text

  • 所有类(class)都是 POCO。
  • 帖子类是abstract .
  • DiscussionList类是 concretes ,从 Posts 继承的(如图所示)。

  • 当我们尝试保存 Discussion 时,我们执行以下代码:- Posts.AddObject(discussion);Sql Server 语法分为两部分。第二个错误。注意到 sql 架构命名空间了吗?这是为什么?
    (代码取自 EFProf )
    insert [dbo].[Posts]
    ([Subject],
    [UniqueSubject],
    [Content],
    [CreatedOn],
    [ModifiedOn],
    [IsVisible],
    [UserId])
    values('Test Subject' /* @0 */,
    'sdfsdfsdfsdfsfdssd' /* @1 */,
    'this is a lot of content - pew pew pew' /* @2 */,
    '23/09/2010 12:22:08 PM +10:00' /* @3 */,
    '23/09/2010 12:22:08 PM +10:00' /* @4 */,
    1 /* @5 */,
    1 /* @6 */)
    select [PostId]
    from [dbo].[Posts]
    where @@ROWCOUNT > 0
    and [PostId] = scope_identity()


    insert [XWingModelStoreContainer].[Discussions]
    ([PostId])
    values(20132 /* @0 */)
    注意表名是 [XWingModelStoreContainer].[Discussions] ??那不应该是 [dbo].[讨论] 吗?请问我们如何解决这个问题?
    .
    .
    更新:
    另外,这是我们设计器属性的另一个屏幕截图..所以你可以看到我们认为它应该调用 [dbo] 因为这是默认的 Database Scheme Name ..
    alt text
    并在 Xml edmx文件.. 有两个命名的行..
    <edmx:StorageModels>
    <Schema Namespace="XWingModel.Store" Alias="Self"
    Provider="System.Data.SqlClient" ProviderManifestToken="2008"
    xmlns:store="http://schemas.microsoft.com.. snip ..."
    xmlns="http://schemas.microsoft.com/ ..snip ..">
    <EntityContainer Name="XWingModelStoreContainer">
    .....
    和 ..
    <!-- C-S mapping content -->
    <edmx:Mappings>
    <Mapping xmlns="http://schemas.microsoft.c.. snip .." Space="C-S">
    <Alias Key="Model" Value="XWingModel" />
    <Alias Key="Target" Value="XWingModel.Store" />
    <EntityContainerMapping CdmEntityContainer="XWingEntities"
    StorageEntityContainer="XWingModelStoreContainer">
    .......
    这也有帮助吗?我不知道这些名字是怎么来的(我假设是自动生成的)以及我需要如何更改它们?如果是这样,它看起来只能通过 xml 文件..这很好..但感觉......错了?
    干杯:)

    最佳答案

    我遇到了类似的问题,问题由 解决了确保子表设置了主键 .

    即使子表对父表有FK,你仍然需要将这些字段设置为PK,否则EF不知道如何对子表执行INSERT。

    所以在你的例子中,尝试设置 PostId 作为 上的主键讨论 表,然后刷新您的模型。

    试一试吧。

    关于.net - 为什么这个 Entity Framework 代码没有保存到数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3775073/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com