繁体   English   中英

具有TPC层次结构的无效对象名称

[英]Invalid Object Name with TPC Hierarchy

我有这个简单的模型:

public Store
{
    public virtual Id { get; protected set; }
    ...
    public virtual ICollection<UserBase> Users { get; protected set; }
}

public abstract UserBase
{
    public virtual Id { get; protected set; }
    public virtual string EMail { get; set; }
    public virtual string Password { get; set; }
}

public Customer : UserBase
{
    public virtual string Address { get; set; }
}

我有这个流利的映射:

public class StoreMap : ClassMap<Store>
{
    public StoreMap()
    {
        Id(x => x.Id).GeneratedBy.GuidComb();
        HasMany(x => x.Users).Cascade.AllDeleteOrphan();
    }
}

public class UserBaseMap : ClassMap<UserBase>
{
    public UserBaseMap()
    {
        UseUnionSubclassForInheritanceMapping();

        Id(x => x.Id).GeneratedBy.GuidComb();
        Map(x => x.EMail).Not.Nullable();
        Map(x => x.Password).Not.Nullable();
    }
}

public class CustomerMap : SubclassMap<Customer>
{
    public CustomerMap ()
    {
        Abstract();

        Map(x => x.Address).Not.Nullable();
    }
}

这是每个具体表映射的映射,并且按预期生成了数据库模式(没有UserBase表,这很好)。

但是,当我尝试将客户添加到“用户集合”时:

using (var t = session.BeginTransaction()) {
    var myCustomer = new Customer { EMail = "mail@mail.com", Password = "YouShouldntLookAtThis" };
    var store = GenericRepository.GetById<Store>(RootId);
    store.Users.Add(myCustomer);
    t.Commit();
}

我收到以下异常:

详细信息:System.Data.SqlClient.SqlException:无效的对象名称'UserBase'。

我认为这是一个映射问题,但我看不到该问题。 你能帮我弄清楚吗?

这是我的五分钱

您可以更改Customer类的映射以包括表名吗

表(“客户”);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM