Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过应用OOPS的最佳用途处理场景_C#_Oop - Fatal编程技术网

C# 通过应用OOPS的最佳用途处理场景

C# 通过应用OOPS的最佳用途处理场景,c#,oop,C#,Oop,在我的场景中,我有两个表,比如员工和经理。使用第一种方法 下面是Employee和Manager类,表示Employee和Manager表对象 public abstract class BaseEmployee { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public long Id { get; set; } public long EmployeeId { get; set; }

在我的场景中,我有两个表,比如员工和经理。使用第一种方法

下面是Employee和Manager类,表示Employee和Manager表对象

public abstract class BaseEmployee
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public long Id { get; set; }
    public long EmployeeId { get; set; }
    public string Address { get; set; }     
}

[Table("Employees", Schema = "EmployeeData")]
public partial class Employee: BaseEmployee
{

}

 [Table("Managers", Schema = "EmployeeData")]
public partial class Manager: BaseEmployee
{
    [Column("ManagerId")]
    public override long EmployeeId { get; set; }

}
}
下面是代码片段;我正在根据员工是否为经理,将记录保存在Employees and Managers表中

BaseEmployee employeeRow;
if (IsManager)
{
     Manager= new Manager();
}
else
{
    employeeRow= new Employee();
}
//Do some stuff
if (IsManager)
{
    context.Managers.Add(employeeRow as Manager);
    context.SaveChanges();
}
else
{
    context.Employees.Add(employeeRow as Employee);
    context.SaveChanges();
}
在这里,一切正常。现在我想在两个表中保存经理,即经理表和员工表

我想做如下事情:

if (IsManager)
{
    context.Managers.Add(employeeRow as Manager);
    context.Employees.Add(employeeRow as Employees);  // throw errors
    context.SaveChanges();
}
else
{
  context.Managers.Add(employeeRow as Employee);
  context.SaveChanges();
}
但在这里,当将employeeRow转换为employeeRow时会抛出异常,这一点很明显,因为我们在使用Manager类实例化employeeRow。我可以通过创建一个Employee类型的对象与Manager对象并行来处理这种情况,但这种方法对我来说并不正确

有谁能建议我如何最好地使用OOPS来处理这个场景吗


谢谢。

也许您可以将
DbSet
更改为
BaseEmployee
类型,而不是
Employees
?或者让
经理从
Employees
继承,而不是
baseemployeep
。感谢Jurgen的回复。我试图从Employee继承Manager,但它并没有在employees表中保存记录,而是保存在Managers表中。这似乎是由于Employee和Manager表上应用了表和架构属性。。。处理此情况的任何建议。也许您可以将
DbSet
更改为
BaseEmployee
类型,而不是
Employees
?或者可能使
Manager
Employees
继承,而不是
baseemployeep
。感谢Jurgen的回复。我试图从Employee继承Manager,但它并没有在employees表中保存记录,而是保存在Managers表中。这似乎是由于Employee和Manager表上应用了表和架构属性。。。任何处理这种情况的建议。