0

我在通过 Entity Framework 5 插入相关行时遇到问题。我将它与 RIA 服务和 .NET Framework 4.5 版一起使用。数据库系统为 MySQL 5.6。连接器版本为 6.6.5。

它引发了外键约束异常。

我选择简化模型以暴露我的问题。

LDM

提供者(ID、名称、地址)

文章(ID、名称、价格)

LinkToProvider(provider_id, article_id, provider_price)

// Id 是 auto_increment 列。

首先,我创建了一个 Article 的新实例。我将 LinkToProvider 的一个实例添加到文章的 LinkProvider 集合中。在此 LinkToProvider 对象中,引用了产品本身。还引用了现有的提供程序。然后我提交更改。

来自 DataViewModel 的示例代码

this.CurrentArticle = new Article();

...

this.CurrentArticle.LinkToProvider.Add(

new LinkToProvider { Article = this.CurrentArticle, Provider = 
this.ProviderCollection.CurrentItem }

);

...

this.DomainContext.articles.Add(this.CurrentArticle);

this.DomainContext.SubmitChanges();

笔记 :

在开始时,Entity Framework 很好地插入了产品。然后它失败了,因为它试图在 LinkToPrivder 表中插入一个具有未知产品 ID 的行,如下所示。

INSERT
INTO LinkToProvider
VALUES(5, 0, 1.2)

它放置 0 而不是生成的 id。

但是,如果我单独插入一个产品而没有任何关系,则产品 ID 会在数据库中正确生成。

任何帮助都感激不尽 !谢谢你。

4

1 回答 1

0

我找到了答案。您需要将存储过程的结果绑定到edmx 模型中的 id 列

所以我必须修改我的存储过程以添加一条指令,以在标准输出上显示文章表的最后插入 id。

SELECT LAST_INSERT_ID() AS NewArticleId;

然后我用存储过程返回的列名的名称添加了绑定。这是NewArticleId。

它在这里解释:http: //learnentityframework.com/LearnEntityFramework/tutorials/using-stored-procedures-for-insert-update-amp-delete-in-an-entity-data-model/

于 2013-04-24T13:12:48.063 回答