在我的项目中,我有两个有趣的数据库表:
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();
}
答案 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;