这里我有两个表,公共代码是用抽象类扩展代码编写的
这是我的两个表格列
public class General
{
public int Id { get; set; }
public string F_Name { get; set; }
public string L_Name { get; set; }
public string Middle_Name { get; set; }
public string Gender { get; set; }
public string PersonName { get; set; }
}
这里我将分离通信代码
public abstract class Common
{
public string F_Name { get; set; }
public string L_Name { get; set; }
}
这是我的Access1表格代码
public class Acc1:Common
{
public string Middle_Name { get; set; }
public string Gender { get; set; }
}
这是我的Access2表格代码
public class Acc2:Common
{
public string PersonName { get; set; }
}
Home.cs
这里我复制了General中的两个表列,当我尝试在d.Access1.Add(ee)保存表时,我收到错误
public ActionResult AbsAssClass(General ss)
{
Acc1 ee = new Acc1
{
};
db.Access1.Add(ee);
return View();
}
答案 0 :(得分:1)
' System.Data.Entity.DbSet.Add(IMA geWithallCtrls.Acces S1)'有一些无效的论点
在这行代码中:
db.Access1.Add(ee);
.Add()
方法期待一种名为Access1
的类型。但是,您正在为其提供名为Acc1
的类型:
Acc1 ee = new Acc1();
Acc1
和Access1
是两回事。
他们可能(或可能不知道,我们不知道)共享相同名称和类型的属性。它们在许多方面可能非常相似。但它们不是同一类型。 C#是一种静态类型语言,所以"类似"不算数。
为方法提供类型ImageWithallCtrls.Access1
的对象以保存到数据库。
注意:可能您的整个数据层不是您需要的,或者您的项目架构以更基本的方式被破坏。我们无法知道,所有这些都远远超出了这个问题的范围。关于手头的问题,为什么你不能将Acc1
对象保存到Access1
表中,这仅仅是因为它们是两个不同的东西。