【发布时间】:2011-07-11 20:39:07
【问题描述】:
根据 .NET 的当前状态,完成以下任务的建议模式和/或技术是什么?
我想通过 WCF 服务传播我的 EF 生成的 SQL 数据库模型。我不想关闭 EF 中的延迟加载,因为我不希望分层结构化实体的级联加载。
在客户端,我不能像处理真正的 EF 对象而不是 WCF 代理一样访问导航属性。我不想发送包括上下文对象在内的 EF 对象,因为在我看来这会破坏 SOA 模式。
事实上,我想更改 Visual Studio 生成的 Reference.cs 文件的实现,以便每次对导航属性的访问都会在需要时引发对服务层的异步回调。
示例:这是一个 Company 类,它通过导航属性引用强制项。这是默认的 WCF-proxy-technique 给我的:
[System.Runtime.Serialization.DataMemberAttribute()]
public AddressManager.CompanyService.Mandatory Mandatory {
get {
return this.MandatoryField;
}
set {
if ((object.ReferenceEquals(this.MandatoryField, value) != true)) {
this.MandatoryField = value;
this.RaisePropertyChanged("Mandatory");
}
}
}
这就是我想要的:
[System.Runtime.Serialization.DataMemberAttribute()]
public AddressManager.CompanyService.Mandatory Mandatory {
get {
if (this.MandatoryField == null)
{
// RAISE SERVICE-METHOD HERE
}
return this.MandatoryField;
}
set {
if ((object.ReferenceEquals(this.MandatoryField, value) != true)) {
this.MandatoryField = value;
this.RaisePropertyChanged("Mandatory");
}
}
}
【问题讨论】:
-
考虑为此模式使用 WCF 数据服务。
-
@JeffN825:非常感谢。我想复杂;-)。经过测试,这对我来说是正确的!
标签: .net visual-studio wcf entity-framework