如何强制设置EntityRef?

时间:2014-02-13 05:20:13

标签: c# linq wcf

在我的项目中,我有两个有趣的数据库表:

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中的User_Event Association

我使用LINQ SQL,我注意到event.User属性只有在我调用get属性时才为null。

现在我必须添加for循环以强制调用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();
    }

1 个答案:

答案 0 :(得分: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;