使用常量指定参照约束

时间:2014-04-10 14:52:56

标签: sql entity-framework constraints

我有一个具有CodeType属性的表。我有另一个具有foo_id属性的表。 foo_idCode Type == foo,因此在这两个表之间创建约束时,我需要将Codefoo_idType匹配为常数Foo

有办法做到这一点吗?我不想在我的第二个表格中添加Type列,而每一行的值都相同,因为这似乎是浪费。

Table 1                    Table 2
Code     <---------------  Foo_id                   Foo_id maps to Code
Type     <---"Foo"                                  But Table 2 doesn't have a property 
                                                    that maps to Type. But it should be 
                                                    constant 

我在Table 1文件中创建了Table 2.edmx之间的关联。当我单击该关联然后单击参考约束时,我可以看到CodeType作为主键,但我只能foo_id我可以用于依赖属性。所以我想指定Type的约束应该是常量。

除了Type之外,Foo还有其他值,但Table 2特别关注的是Foo类型。

我可以通过以下方式解决这个问题:

var x = from i in Table2
        select new { someT2Prop = i.Table2Prop,
                     someT1Prop = (from r in Table1 where r.Code == i.Foo_id 
                                   && r.Type == "Foo" select r.Table1Prop).FirstOrDefault() };

但这有点混乱。我想要一个从Table 2Table 1的导航属性,所以我可以这样做:

var x = from i in Table2
        select new { someT2Prop = i.Table2Prop,
                     someT1Prop = i.Table1.Table1Prop };

1 个答案:

答案 0 :(得分:2)

如果我理解你的问题,那么:

创建视图:

SELECT Code 
FROM [Table 1]
WHERE Type = "Foo"

然后从此视图对代码值进行约束。