【问题标题】:EF Code First CTP5. How to store the Inheritated data from a baseclasEF 代码优先 CTP5。如何存储来自基类的继承数据
【发布时间】:2011-03-25 19:50:57
【问题描述】:

我有一个包含一些默认数据的用户类。

   public class User : BaseEntity
    {
        //-- Declaration
        private string _firstname;
        private string _lastname;
        private ICollection<BaseProfile> _profiles = new List<BaseProfile>();

        //-- Constructor
        public User() { }

        //-- Properties
        public string Firstname
        {
            get { return _firstname; }
            set { _firstname = value; base.Name = string.Format("{0} {1}", this.Firstname, this.Lastname); }
        }
        public string Lastname
        {
            get { return _lastname; }
            set { _lastname = value; base.Name = string.Format("{0} {1}", this.Firstname, this.Lastname); }
        }
        public EMailAddress EmailAddress { get; set; }
        public SocialSecurityNumber SocialSecurityNumber { get; set; }
        public Password Password { get; set; }
        public virtual ICollection<BaseProfile> Profiles { get { return _profiles; } set{_profiles = value; }}
    }

配置文件包含基于用户可以拥有的不同配置文件的不同配置文件数据。如果用户是玩家,那么 Profiles 将包含 ProfilePlayer 类,如果用户是 Trainer,它将包含 ProfileTrainer 类。如果 User 是 Player 和 Trainer,它将包含 2 个配置文件,一个 ProfilePlayer 类和一个 ProfileTrainer 类。此配置文件类将包含为用户可能的不同配置文件指定的信息。

现在我的问题是,我如何告诉 EF 它应该将不同的 BaseProfiles 保存为指定的类型,因为当 EF 为我创建数据库时,即使“真实”类型是 ProfilePlayer,它也会被创建为 BaseProfiles班级。我是否需要手动创建不同的表,然后进行一些映射,或者是否有一种简单的方法告诉 EF 创建不同的配置文件类并将基本配置文件数据保存到正确的表中?

【问题讨论】:

  • 你在使用继承的profile类吗?
  • 是的,我的ProfilePlayer、ProfileTrainer都继承了BaseProfiler。

标签: entity-framework entity-framework-ctp5


【解决方案1】:

我确实找到了解决问题的方法。

    modelBuilder.Entity<Domain.BaseProfile>()
        .Map<Domain.Model.ProfilePlayer>(p => p.Requires("Discriminator").HasValue("ProfilePlayer"))
        .Map<Domain.Model.ProfileTrainer>(p => p.Requires("Discriminator").HasValue("ProfileTrainer"));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多