SQL Server关系中一个非常有趣的问题(SQL Server 2008R2、LINQ到SQL、Visual Studio 2010、C#)
我在做一个网络项目。我通过LINQ To Sql使用Sql Server 20008 R2数据库,今天我遇到了一个非常奇怪的关系问题。我已经用了一段时间了,到目前为止还没有任何问题 假设我有一个表SQL Server关系中一个非常有趣的问题(SQL Server 2008R2、LINQ到SQL、Visual Studio 2010、C#),c#,sql-server,linq-to-sql,relationship,C#,Sql Server,Linq To Sql,Relationship,我在做一个网络项目。我通过LINQ To Sql使用Sql Server 20008 R2数据库,今天我遇到了一个非常奇怪的关系问题。我已经用了一段时间了,到目前为止还没有任何问题 假设我有一个表存储有以下字段:ID,Name,LastUserID,其中LastUserID是对Users表的“引用” 用户表具有以下字段:ID,Name,FavoriteStoreID,其中FavoriteStoreID是对Stores表的“引用” 所以我有一种递归关系 Store.LastUser.Name //
存储有以下字段:ID
,Name
,LastUserID
,其中LastUserID
是对Users
表的“引用”
用户表具有以下字段:ID
,Name
,FavoriteStoreID
,其中FavoriteStoreID
是对Stores表的“引用”
所以我有一种递归关系
Store.LastUser.Name // shows the name of the last user of the store
User.FavoriteStore.Name // shows the name of user's favorite store.
在Visual Studio的designer中,如下所示:
----------
- -
- Users -
- -
----------
| / \
| |
| |
\ / |
----------
- -
- Stores -
- -
----------
现在的问题是,当有两个箭头(两个关系)时,其中只有一个有效。当我使用另一个时,我得到的对象引用没有设置为对象的实例。
错误
当我重新创建表时,首先添加该关系(引发异常的关系),它会工作。但当我添加另一个时,它不起作用
很明显,我搞砸了一些事情,SQL Server不明白如何解释我希望它做什么
如何解决此问题?听起来好像您正在设置两个实体关联,而您只需要一个实体关联,这可能会混淆LINQ和SQL。在dbml设计器中,尝试在用户和存储表之间仅设置一个关联,并在关联属性中,将基数设置为OneToOne,这将在用户和存储实体上创建子属性和父属性。即使两个表之间只有一个关联,您仍然应该能够从用户对象获取存储,从存储对象获取用户。听起来您在设置两个实体关联,而您只需要一个实体关联,这可能会混淆LINQ到SQL。在dbml设计器中,尝试在用户和存储表之间仅设置一个关联,并在关联属性中,将基数设置为OneToOne,这将在用户和存储实体上创建子属性和父属性。即使两个表之间只有一个关联,您仍然应该能够从用户对象和用户对象中获取存储。问题在于设计者无法找出循环引用。我将通过在设计器中创建缺少的引用来处理此问题。问题是设计器无法找出循环引用。我将通过在设计器中创建缺少的引用来处理此问题。我不确定问题出在哪里,但我重新创建了表,现在它工作正常。因此LINQ To SQL确实可以使用循环引用。我不确定问题出在哪里,但我重新创建了表,现在它工作正常。因此LINQ To SQL确实可以使用循环引用