创建没有外键的 LINQ 关联

Ale*_*lex 5 sql linq foreign-keys

是否可以在 LINQ 中拥有类似 ContactAddress.Contact 的内容,而无需在 SQL Server 中在这两者之间创建外键关系(即 Contact.Id <-> ContactAddress.ContactId)?

Bry*_*tts 6

是的,您可以定义目标数据库中不存在的外键。LINQ to SQL 生成的联接最终将是相同的,我的意思是:

from category in db.Categories
from product in category.Products
select new
{
    Category = category,
    Product = product
}
Run Code Online (Sandbox Code Playgroud)

将生成与此相同的 T-SQL:

from category in db.Categories
join product in db.Products on category.CategoryId equals product.CategoryId
select new
{
    Category = category,
    Product = product
}
Run Code Online (Sandbox Code Playgroud)

这将是这样的:

SELECT
    *
FROM
    Category INNER JOIN Product ON Category.CategoryId = Product.CategoryId
Run Code Online (Sandbox Code Playgroud)

这是一种使遗留模式更可用的有用技术。


Amy*_*y B 4

如果要在对象关系映射中创建关系(即使数据库中不存在该关系作为声明的外键),则可以使用对象关系设计器来执行此操作。

http://msdn.microsoft.com/en-us/library/bb629295.aspx