2009-05-21 108 views
1

我有一个客户端/服务器应用程序,其中客户端和服务器有一些公用表(它们作为应用程序的一部分保持同步)。多个DBML文件 - 类型共享?

我们目前将这些表(即FileDetails)存储在Shared.dbml文件中。到目前为止,任何返回FileDetails集合的结果的存储过程都被放置在Shared.dbml中(即使它是一个Server-only)SP。

我发布了LINQ to SQL支持DBML上的基类属性,我想也许我可以有一个Server.dbml,它扩展了我的Shared.dbml。从理论上讲,这将为我提供一个包含所有共享表和SP以及服务器特定元素的ServerDataContext。通常在SQL设计器中,我会拖放SP,通过FileDetails表来显示这是返回的内容,但是由于类在不同的DBML中,这是不可能的,而在XML中,我不认为ElementType IDREF =“1”的方式将工作(如裁判需要指向另一个文件)

我发现我能找到解决这个问题通过编辑个XML返回手动键入:

<Function Name="dbo.SELECT_FTS_FILES" Method="SELECT_FTS_FILES"> 
    <Return Type="ISingleResult&lt;DataTypes.FileDetails&gt;" /> 
</Function> 

我的问题是,有没有人有这种方法的经验,并可以指向我更多的资源?是否有任何明显的缺点,它(不是比手动更新XML等)

所有反馈欢迎

回答

2

你可以从你的DataContext继承。然而,在你的新数据上下文中,你将无法使用linq设计器,你必须手动编写代码。

是否有任何理由你不想要两个datacontext?

继承和LinqToSql在一般情况下一起玩并不好。如果你有很深的需求,你应该看看另一个像NHibernate这样的ORM。

+0

我想将它们分开,只是为了确保编译检查客户端代码,不能调用服务器的存储过程。我想这可能带来的好处不大,也许不值得。 – MattH 2009-05-21 12:49:08