我有两个表用于跟踪我的网站上的用户会话。这是一个过于简单化BTW:在LINQ中自动连接外键的最有效方法
Campaign:
campaignId [int]
campaignKey [varchar(20)]
description [varchar(50)]
Session:
sessionDate [datetime]
sessionGUID [uniqueidentifier]
campaignId [int]
campaignKey [varchar(20)]
我要插入一个新记录会话,使用LINQ:
var s = new Session();
dbContext.Session.InsertOnSubmit(s);
s.sessionDate = DateTime.Now;
s.sessionGUID = Guid.NewGuid();
s.campaignKey = Request.Params["c"];
// dont set s.campaignId here...
dbContext.SubmitChanges();
请注意,我不是目前这个代码设置campaignId
。
我想要的是东西到automaticaly联播的外键“运动”表,不管用什么方法,必须先添加一个新行“活动”表如果传入的活动从未使用过之前。
我有一些需要作出决定,真的希望任何人的见解:
我不知道我是否应该在LINQ手动使用触发器,存储过程或做到这一点:
触发:轻微恶心,从来没有真正使用他们喜欢的,但将保证“CAMPAIGNID”是由时间更新我需要它
存储过程:再次稍微恶心,我的SQL不是很好,我非常重视能够尽可能在LINQ中做所有事情的一致性。
Linq手动:我必须在内存中保留一份'Campaign'表,并使用C#哈希表来查找。如果其他客户添加了新的广告系列,我就不用担心保持该表的最新状态。
- 我主要的两个原因,希望这个外键表是在“会议”的“CAMPAIGNID”这样我就可以做分组更快更有效的指标。它只是好像它应该是更快,如果它只是一个整数列被分组。第二个原因是让合作伙伴有权通过与其他表的联合来查看他们的广告系列。
之前有人问我提前不知道的活动,因为有些将由合作伙伴创建。
最重要的是:我主要是在寻找最“LINQ友好”的解决方案。
嗨,Simon,是在数据库中映射的Fk关系,这是在Linq2SQL模型中显示的? – 2009-06-25 07:50:29
@littlegeek - 没有FK关系,但我可以添加一个。事实上,现在在Session表中有很多行,Campaign中没有条目。我想在理论上我可以捕捉异常的外键约束异常,然后在那一点添加一行。那也听起来也是咯咯地笑 – 2009-06-25 21:08:14