我们有一个看起来像这样的表:
CREATE TABLE Lockers { UserID int NOT NULL PRIMARY KEY (foreign key), LockerStyleID int (foreign key), NameplateID int (foreign key) }
所有键都与其他表相关,但由于应用程序的分发方式,我们更容易将ID作为参数传递.所以我们想这样做:
Locker l = new Locker { UserID = userID, LockerStyleID = lockerStyleID, NameplateID = nameplateID }; entities.AddLocker(l);
我们可以在LINQ-to-SQL中完成,但不能用EF?
这个缺失的功能似乎惹恼了很多人.
好消息:MS将解决.NET 4.0的问题.
坏消息:就目前而言,或者如果你坚持使用3.5,你必须做一些工作,但这是可能的.
你必须这样做:
Locker locker = new Locker(); locker.UserReference.EntityKey = new System.Data.EntityKey("entities.User", "ID", userID); locker.LockerStyleReference.EntityKey = new EntityKey("entities.LockerStyle", "ID", lockerStyleID); locker.NameplateReference.EntityKey = new EntityKey("entities.Nameplate", "ID", nameplateID); entities.AddLocker(locker); entities.SaveChanges();