C# 继承挑战

标签 c#

我正在尝试解决一个基本问题,但有点卡住了。

我有一个基类:

public abstract class EntityBase<TEntity> where TEntity : class
{
    public virtual int Id { get; set; }
    public virtual DateTime DateCreated { get; set; }
    public virtual DateTime DateModified { get; set; }
}

所有保存到数据库(使用 EF)的类都会继承。

然后我有一个复杂的类型:

public class Address
{
    public virtual string ContactName { get; set; }
    public virtual string Line1 { get; set; }
    public virtual string Line2 { get; set; }
    public virtual string Line3 { get; set; }
    public virtual string City { get; set; }
    public virtual string State { get; set; }
    public virtual string PostalCode { get; set; }
    public virtual string Country { get; set; }
}

还有一个 CustomerAddress ,它与 Address 类型具有相同的字段,但需要持久化到数据库。

public class CustomerAddress : EntityBase<CustomerAddress>
{
    public virtual int CustomerId { get; set; }

    public virtual string ContactName { get; set; }
    public virtual string Line1 { get; set; }
    public virtual string Line2 { get; set; }
    public virtual string Line3 { get; set; }
    public virtual string City { get; set; }
    public virtual string State { get; set; }
    public virtual string PostalCode { get; set; }
    public virtual string Country { get; set; }
}

我知道在 C# 中一次只能继承一个类,但是我怎样才能使这项工作顺利进行,以便基本上 CustomerAddress 继承这两个类?

有什么想法吗?

最佳答案

如果使用 Address 作为实体类 CustomerAddress 的参数会怎样?

public class CustomerAddress : EntityBase<CustomerAddress>
{
    public int CustomerId { get; set; }

    [ForeignKey("CustomerId")]
    public virtual Customer Customer { get; set; }

    public Address BaseAddress { get; set; }
}

关于C# 继承挑战,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23186332/

相关文章:

c# - 使用 FastMember 将不同的对象列表转换为 DataTable

c# - 如何以编程方式检测代码是否在共享 DLL 或 exe 中运行?

c# - 如何在 RavenDB Lucene 查询中包含日期条件

c# - 函数/方法的合适名称

c# - 可以在文件系统中保存缩略图版本吗?通常的做法是什么?

c# - 将匿名委托(delegate)传递给线程......为什么这样做有效?

c# - 为什么 Task 实现了 IAsyncResult,但不包含 AsyncWaitHandle 成员?

c# - 没有类型的 IEnumerable 属性

c# - 除了某些索引处的元素外,如何在列表上使用 foreach 循环?

c# - 如何避免 TRY 语句导致程序性能不佳?