2014-02-13 38 views
0

在我的項目我有兩個有趣的數據庫表:如何強制設置EntityRef?

CREATE TABLE [dbo].[User] 
(
    [Id] INT NOT NULL IDENTITY, 
    [Name] NCHAR(60) NOT NULL, 
    PRIMARY KEY ([Id]) 
) 

CREATE TABLE [dbo].[Event] 
(
    [Id] INT NOT NULL PRIMARY KEY identity, 
    ... 
    [User id] INT NULL, 
    CONSTRAINT [FK_Event_User] FOREIGN KEY ([User id]) REFERENCES [User](Id) 
) 

我想有機會獲得我的應用程序事件的用戶從WCF獲取數據。

爲了使這個可能我要this回答 Child Property

我使用LINQ SQL,並且我注意到event.User屬性只有在我調用get屬性時纔是null。

現在我要補充的循環,迫使調用this._User.Entity,但它並不像這種解決方案

public List<Event> GetAllEvents() 
    { 
     var ev = Database.Instance.Db.Events; 
     foreach (var v in ev) 
     { 
      User u = v.User; 
     } 
     return ev.ToList(); 
    } 

回答

0

也許問題是由DataContext.DeferredLoadingEnabled財產造成。

根據msdn

DeferredLoadingEnabled

獲取或設置一個值,該值指示是否延遲加載一個一對多或一對一的一對一的關係。

更新

終於我從Linq to SQL解決了這個問題LoadWith功能。

db = new ModelDataContext(); 

/* setting lazy evaluation rules */ 
DataLoadOptions dlo = new DataLoadOptions(); 
dlo.LoadWith((Session s) => s.Exam); 
dlo.LoadWith((Session s) => s.SessionUsers); 
db.LoadOptions = dlo;