Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.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# 最佳重载方法匹配有一些无效的实体框架_C#_Asp.net Mvc_Entity Framework - Fatal编程技术网

C# 最佳重载方法匹配有一些无效的实体框架

C# 最佳重载方法匹配有一些无效的实体框架,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我在插入数据库时遇到这个错误。我已经强调了这一部分 无法从“Mvcapps.Models.MembersModel”转换为“Mvcapps.Models.tblMember” 前几天我写过这样的文章,但效果不错 public JsonResult CreateNewMember(MembersModel m) { try { using (var db = new DbEntityDataModel()) { ***var

我在插入数据库时遇到这个错误。我已经强调了这一部分

无法从“Mvcapps.Models.MembersModel”转换为“Mvcapps.Models.tblMember”

前几天我写过这样的文章,但效果不错

public JsonResult CreateNewMember(MembersModel m)
{
    try
    {
        using (var db = new DbEntityDataModel())
        {
            ***var EmpAdd = db.tblMembers.Add(m);***  
            return Json(new { Result = "Error", Records = EmpAdd });
        }
    }
    catch (Exception EX)
    {
        return Json(new { Result = "Error", Message = EX });
    }
}
这里是
tblMember

public JsonResult CreateRecord(Person objperson)
{
        try
        {
            using (var db = new VIVEK_ROOPASOFTEntities1())
            {
                var addedPerson = db.Persons.Add(objperson);
                db.SaveChanges();
                return Json(new { Result = "OK", Records = addedPerson }, JsonRequestBehavior.AllowGet);
            }
}

public class MembersModel
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Gender { get; set; }
    public string Mobile { get; set; }
    public string Email { get; set; }
    public string Pasword { get; set; }
    public string Country { get; set; }
    public string City { get; set; }
    public string PinCode { get; set; }
}

db.tblMembers
是类型
tblMembers
的集合-您试图存储到其中的是类型
MembersModel
-这与不一样(不是同一类)


这正是错误所说的-它无法自动将
MembersModel
(您的参数
m
)转换为
tblMember
-您需要自己进行转换

回应您对问题本身的评论。实体框架将数据库表表示为项目中的类。您收到的错误消息告诉您,EF不知道如何将MembersModel转换为tblMember,以便将该数据保存到DB


正如@marc_s所说,您需要自己从MembersModel转换为tblMember

假设您已经知道您收到的MembersModel绝对是新的,您不必检查它是否存在。我会做类似的事情

namespace Mvcapps.Models
{
   using System;
   using System.Collections.Generic;

   public partial class tblMember
   {
       public int Id { get; set; }
       public string FirstName { get; set; }
       public string LastName { get; set; }
       public string Gender { get; set; }
       public string Mobile { get; set; }
       public string Email { get; set; }
       public string Pasword { get; set; }
       public string Country { get; set; }
       public string City { get; set; }
       public string PinCode { get; set; }
   }
}

由于db.tblMembers是tblMember类型的集合,并且MembersModel和tblMember之间没有隐式或显式转换,因此您必须自己进行转换

前几天,我写了以下内容,其工作良好的公共JsonResult CreateRecord(Person objperson){try{using(var db=new VIVEK_roopasofenties1()){var addedPerson=db.Persons.Add(objperson);db.SaveChanges();返回Json(新的{Result=“OK”,Records=addedPerson},JsonRequestBehavior.AllowGet);}@Vivekh也许如果你将MembersModel的代码添加到问题中,有人可以给出更全面的答案,但这个答案清楚地解释了你的问题。@Vivekh:这再次清楚地表明你有两种不同的对象类型-它们不一样-你需要从一种转换到另一种,正如错误明确指出的那样……啊,我是霍皮ng该MembersModel具有tblMember属性。tblMember类的定义是什么?tblMember只是一个数据库表重要的是,不是!消息“无法从'Mvcapps.Models.MembersModel'转换为'Mvcapps.Models.tblMember'”正在告诉您数据库表tblMember的行由Mvcapps.Models.tblMember重复。请在您的解决方案中查找这一点……我已将其添加到codeYep中,因此C#不会自动知道MembersModel和tblMember具有相同的属性或它们的含义相同。您必须添加转换,手动将一个转换映射到另一个另一个(如我的回答所示)或者如果出于某种原因您不想做这些事情,那么您可以使用AutoMapper(但即使这样,您也必须定义ModelMember映射到tblMember)。
public JsonResult CreateNewMember(MembersModel m)
{
    try
    {
        var newTblMember = new tblMember
                                 {
                                   Id = m.Id,
                                   FirstName = m.FirstName,
                                   LastName = m.LastName,
                                   // and so on for the other properties
                                  };
        using (var db = new DbEntityDataModel())
        {
            var EmpAdd = db.tblMembers.Add(newTblMember);  
            return Json(new { Result = "Error", Records = EmpAdd });
        }
    }
    catch (Exception EX)
    {
        return Json(new { Result = "Error", Message = EX });
    }
}