首页 新闻 搜索 专区 学院

为什么在服务器端 Entity Framework 4.1(EF4.1 CodeFirst) 定义的实体继承了自定接口,在 Silverlight 客户端没有显示继承这个接口?

0
悬赏园豆:100 [待解决问题] 解决于 2011-08-17 11:49

为什么在服务器端 Entity Framework 4.1(EF4.1 CodeFirst) 定义的实体继承了自定接口,在 Silverlight 客户端没有显示继承这个接口?
在服务器端实现特定接口的多个实体可以在 Silverlight 客户端进行统一处理,以减少编程代码

 

namespace MiniNWModel
{
    // 一.定义数据树接口
    public interface IDataTree
    {
        [Key]
        string NodeID { get; set; }
        string NodeName { get; set; }
        string FatherID { get; set; }
    }

    // 二.实现数据树接口的实体 
    public class DataTree : IDataTree
    {
        [Key]
        string NodeID { get; set; }
        string NodeName { get; set; }
        string FatherID { get; set; }
    }

    // 三.数据库访问网关
    public class MyDbContext : DbContext
    {
        public MyDbContext() { }
        public DbSet<DataTree> DataTrees { get; set; }
        protected override void OnModelCreating(DbModelBuilder modelBuilder) { }
    }

    // 四.对 Silverlight 客户端公开查询方法的域服务
    [EnableClientAccess()]
    public class DataTreesService : DomainService
    {
        public IEnumerable<DataTree> GetDataTrees()
        {
            using (MyDbContext context = new MyDbContext())
            {
                return context.DataTrees;
            }
        }
    }

    // 五.在 Web.g.cs 文件
    // 问题就在 Silverlight 客户端为什么没有继承IDataTree接口??????
    // 那我要怎样设置才有可能在这也显示继承IDataTree接口??????
    [DataContract(Namespace = "http://schemas.datacontract.org/2004/07/EDS.Web")]
    public sealed partial class DataTree : Entity
    {
        private string _nodeID;
        private string _nodeName;
        private string _fatherID;
        partial void OnNodeIDChanging(string value);
        partial void OnNodeIDChanged();
        partial void OnNodeNameChanging(string value);
        partial void OnNodeNameChanged();
        partial void OnFatherIDChanging(string value);
        partial void OnFatherIDChanged();

        /// <summary>
        /// 获取或设置“NodeID”值。
        /// </summary>
        [DataMember()]
        public string NodeID
        {
            get
            {
                return this._nodeID;
            }
            set
            {
                if ((this._nodeID != value))
                {
                    this.OnNodeIDChanging(value);
                    this.RaiseDataMemberChanging("NodeID");
                    this.ValidateProperty("NodeID", value);
                    this._nodeID = value;
                    this.RaiseDataMemberChanged("NodeID");
                    this.OnNodeIDChanged();
                }
            }
        }

        /// <summary>
        /// 获取或设置“NodeName”值。
        /// </summary>
        [DataMember()]
        public string NodeName
        {
            get
            {
                return this._nodeName;
            }
            set
            {
                if ((this._nodeName != value))
                {
                    this.OnNodeNameChanging(value);
                    this.RaiseDataMemberChanging("NodeName");
                    this.ValidateProperty("NodeName", value);
                    this._nodeName = value;
                    this.RaiseDataMemberChanged("NodeName");
                    this.OnNodeNameChanged();
                }
            }
        }

        /// <summary>
        /// 获取或设置“FatherID”值。
        /// </summary>
        [DataMember()]
        public string FatherID
        {
            get
            {
                return this._fatherID;
            }
            set
            {
                if ((this._fatherID != value))
                {
                    this.OnFatherIDChanging(value);
                    this.RaiseDataMemberChanging("FatherID");
                    this.ValidateProperty("FatherID", value);
                    this._fatherID = value;
                    this.RaiseDataMemberChanged("FatherID");
                    this.OnFatherIDChanged();
                }
            }
        }
    }

}
jackymaps的主页 jackymaps | 初学一级 | 园豆:100
提问于:2011-07-18 11:49
< >
分享
所有回答(2)
0

明显继承Entity更加方便扩展,silverlight并不是所有.net类型或操作方面都可以兼容使用的

真见 | 园豆:195 (初学一级) | 2011-07-21 08:41
自动继承Entity是肯定的,但要多1个接口就不知道怎么搞了,下面系统有个例子,它不知道怎么实现的?
在服务器端:
public class LoginUser : IUser
{
}
在客户端代理类:
[DataContract(Namespace="http://schemas.datacontract.org/2004/07/EDS.Web")]
public sealed partial class LoginUser : Entity, IIdentity, IPrincipal
{
}
支持(0) 反对(0) jackymaps | 园豆:100 (初学一级) | 2011-07-21 10:18
0

求解

hhsimon | 园豆:5 (初学一级) | 2011-08-16 20:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册