C# 最佳重载方法匹配有一些无效的实体框架
我在插入数据库时遇到这个错误。我已经强调了这一部分 无法从“Mvcapps.Models.MembersModel”转换为“Mvcapps.Models.tblMember” 前几天我写过这样的文章,但效果不错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
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 });
}
}