Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LINQ到SQL对其他数据上下文中实体的引用_Linq_Visual Studio_Linq To Sql_Modularity - Fatal编程技术网

LINQ到SQL对其他数据上下文中实体的引用

LINQ到SQL对其他数据上下文中实体的引用,linq,visual-studio,linq-to-sql,modularity,Linq,Visual Studio,Linq To Sql,Modularity,在我的数据库设计中,我倾向于使用表的“集群”。这些集群通常支持一个或一组功能紧密相关的应用程序。通常,这些集群也通过相对较少的外键相互关联;这有助于业务中其他独立的应用程序相互集成 例如,假设我有应用程序“Foo”、“Bar”和“Baz”,每个应用程序都有几个表。以下是表及其外键引用的列表: 脚踏板 FooTableTwo->FooTableOne BarTableOne->FoottableTwo Bartable2->Bartable1 巴兹泰隆 BazTable2->Footable2,

在我的数据库设计中,我倾向于使用表的“集群”。这些集群通常支持一个或一组功能紧密相关的应用程序。通常,这些集群也通过相对较少的外键相互关联;这有助于业务中其他独立的应用程序相互集成

例如,假设我有应用程序“Foo”、“Bar”和“Baz”,每个应用程序都有几个表。以下是表及其外键引用的列表:

  • 脚踏板
  • FooTableTwo->FooTableOne
  • BarTableOne->FoottableTwo
  • Bartable2->Bartable1
  • 巴兹泰隆
  • BazTable2->Footable2,BazTable1
目前,我正在使用LINQtoSQL访问这些表。我为每个集群(Foo、Bar和Baz)都有一个单独的项目,并且每个项目都为集群中的所有表提供了一个.dbml。这里的想法是,使用集群的每个(一个或多个)应用程序都可以导入一个包含所需LINQ类的共享库

这可能是个好主意,也可能不是个好主意;它看起来像是一个。我真正想知道的是,我是否可以拥有由另一个集群中的类表示的集群之间的引用,即使它们存在于不同的上下文类中。(更具体地说,是如何在VisualStudio中创建这种关系)

回到这个例子,我想要:

  • 富计划
    • Foo.dbml
    • FooDataContext
    • 脚踏板
      • 一只脚,两只脚
    • 脚踏板
      • 足部的,足部的
      • FooTableTwo.bartableone(这个没那么重要)
      • FooTableTwo.BazTableTwos(这一项没有那么重要)
  • 项目栏
    • Bar.dbml
    • BarDataContext
    • 巴塔布隆
      • 一号,二号
      • 一个,两个
    • 巴塔布尔二号
      • 两个,一个
  • 巴兹项目
    • Baz.dbml
    • BazDataContext
    • 巴兹泰隆
      • BazTableOne.BazTableTwos
    • 表二
      • 两个,两个
      • 二,一
在外部,对上下文外实体的所有引用都是简单ID(INT),而不是对象,并且上下文外实体的集合根本不存在。我知道我可以将自己的方法添加到这些类中以进行适当的查找(给定上下文的一个实例),但我希望使事情更加精简和一致


注意,通过上下文/集群的这种分离,我得到了应用程序之间的模块化。例如,Baz应用程序只需导入Baz和Foo上下文(因为Baz依赖于Foo),而不必导入Bar。(这假设我在Foo中没有Bar实体的集合,这对我来说很好)。这是一件很好的事情,但它并不重要:如果LINQ/VS不容易,那么我会考虑取消模块化,并在一个大的上下文中进行。

L2S不能对跨DML文件的关系建模。在国际海事组织,这是L2S的一个主要缺点。 在我们的应用程序中,我很难做到这一点。我们在单独的DBML文件中拥有所有实体。每个DBML文件表示应用程序中的名称空间,以及SQL Server数据库中的模式

因此,我最后要做的是,对于每个实体,在不同的命名空间中有一个表示外部关系的属性,我在部分类中的属性上放置一个自定义关联属性,它模仿L2S关联属性。这个自定义属性允许我们自己管理关系。没有L2那么有效,但对我们来说效果很好


Randy不能跨DBML文件建模关系。在国际海事组织,这是L2S的一个主要缺点。 在我们的应用程序中,我很难做到这一点。我们在单独的DBML文件中拥有所有实体。每个DBML文件表示应用程序中的名称空间,以及SQL Server数据库中的模式

因此,我最后要做的是,对于每个实体,在不同的命名空间中有一个表示外部关系的属性,我在部分类中的属性上放置一个自定义关联属性,它模仿L2S关联属性。这个自定义属性允许我们自己管理关系。没有L2那么有效,但对我们来说效果很好

兰迪