【发布时间】:2014-01-07 12:12:20
【问题描述】:
我有一个关于使用 Liqn to SQL 处理 DB 的问题。
我有一个小数据库,其中包括 4 个表,并且我为这些表创建了 Liq to SQL 类:
所以,这一切都是在我的 AppName.Web 项目上创建的。我还创建了一个 WPF 服务,它返回包含所有条目的列表集合。
当我试图从 Silverlight 项目中调用我的函数时,我得到了 CommunicationException。我尝试设置maxReceivedMessageSize 和maxBufferSize,但问题仍然出现。比我添加[DataContract] 和[DataMember] 标记到自动生成的类(属性除外,它表示引用,如Mod 表中的Items,Recipes 和Item 表中的Entries 等)它开始工作,但我只能从一个表中接收数据。
如何接收所有表格中包含所有子项的 Mod 列表? linq to sql 是最好和最简单的方法之一吗?
UPD1: 返回列表的函数:
public MCDataClassesDataContext GetContext()
{
var context = new MCDataClassesDataContext();
var dlo = new DataLoadOptions();
dlo.LoadWith<Mod>(p => p.Item);
dlo.LoadWith<Item>(p => p.Recipe);
dlo.LoadWith<Item>(p => p.Entry);
dlo.LoadWith<Recipe>(p => p.Entry);
context.LoadOptions = dlo;
return context;
}
public List<Mod> GetMods()
{
return GetContext().Mod.ToList();
}
【问题讨论】:
-
问题是你的代码没有很好的分层。 WCF 服务应该位于与数据访问层分开的中间层。并且 UI 应该与中间层分开。
-
在创建 SL 应用程序时,您有 2 个项目:一个用于数据和服务,一个用于 UI。我试图从 AppName.Web 获取数据到 AppName 项目(就像在所有 SL 项目中一样)
标签: c# wcf silverlight