gpt4 book ai didi

c# - WCF 数据服务和更新

转载 作者:太空狗 更新时间:2023-10-30 01:25:46 25 4
gpt4 key购买 nike

我有一个 WCF 数据服务,其中包含一个名为 Contract 的实体。

Contracts 和 Quotes 之间存在多对多关系:( * ) Contract <----> ( * ) Quotes

我有一个方法可以添加/删除契约(Contract)和报价之间的链接。

有时我会收到 updateException,因为当链接已经存在时我试图在契约(Contract)和报价之间添加链接。

我想编写一个查询,仅当链接不存在时才添加链接,而无需查询数据库以获取我的契约(Contract)和报价之间的现有链接。

有没有一种使用表达式树来做到这一点的方法?还是 Linq?

目前,我这样做:

void ModifyContract(Contract ctr)
{
var contractInDb = (from c in service.Contracts.Expand("Quotes")
where c.Id == ctr.Id).Single();

foreach(q in ctr.Quotes)
{
if( ! contractInDb.Quotes.Contains(q))
{
service.AddLink(ctr,"Quotes", q);
}
}

service.SaveChanges();
}

最佳答案

我自己针对 Silverlight 问了一个类似的问题 How to do a server-side Insert/Update (Upsert) from Silverlight RIA services

您要么需要检查现有关系(然后这取决于您的效率如何),要么您可以将 Upsert 功能放入存储过程(例如 sp_UpsertQuote(contractId, quoteId) 并改为调用它使用 SaveChanges()。

关于c# - WCF 数据服务和更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6307928/

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