。新增(ImageWithallCtrls.Access1)'有一些无效的论点

时间:2016-12-22 19:02:44

标签: c#

这里我有两个表,公共代码是用抽象类扩展代码编写的

这是我的两个表格列

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();

        }

1 个答案:

答案 0 :(得分:1)

  

' System.Data.Entity.DbSet.Add(IMA geWithallCtrls.Acces S1)'有一些无效的论点

在这行代码中:

db.Access1.Add(ee);

.Add()方法期待一种名为Access1的类型。但是,您正在为其提供名为Acc1的类型:

Acc1 ee = new Acc1();

Acc1Access1是两回事。

他们可能(或可能不知道,我们不知道)共享相同名称和类型的属性。它们在许多方面可能非常相似。但它们不是同一类型。 C#是一种静态类型语言,所以"类似"不算数。

为方法提供类型ImageWithallCtrls.Access1的对象以保存到数据库。

注意:可能您的整个数据层不是您需要的,或者您的项目架构以更基本的方式被破坏。我们无法知道,所有这些都远远超出了这个问题的范围。关于手头的问题,为什么你不能将Acc1对象保存到Access1表中,这仅仅是因为它们是两个不同的东西。