我有这个对象:
public class OrderViewModel : ORDERS
{
public IEnumerable<SelectListItem> mCountryList { get; set; }
public OrderViewModel()
{
List<string> listCountries = new List<string>();
XmlDocument doc = new XmlDocument();
doc.Load(HttpContext.Current.Server.MapPath("~/App_Data/countries.xml"));
var xmlNodeList = doc.SelectNodes("//country");
if (xmlNodeList != null)
{
listCountries.AddRange(from XmlNode node in xmlNodeList select node.InnerText);
}
mCountryList = new SelectList(listCountries);
}
public void SetCountry(string _country)
{
foreach (var selectListItem in mCountryList.Where(_selectListItem => _selectListItem.Value == _country))
{
selectListItem.Selected = true;
}
}
}
哪个继承自ORDERS
,我的数据库中包含的对象:
public DbSet<ORDERS> ORDERS { get; set; }
因为此时我想创建一个新的ORDERS
,但需要用户目的的国家/地区列表。但是,当我尝试创建这样的订单时:
using (MyEntity db = new MyEntity())
{
if (db.Database.Connection.State == ConnectionState.Closed)
{
db.Database.Connection.Open();
}
OrderViewModel orderToReturn = new OrderViewModel();
db.ORDERS.Add((ORDERS)orderToReturn);
db.SaveChanges();
}
我收到以下错误:
Mapping and metadata information could not be found for EntityType 'MyApp.ViewModels.OrderViewModel'.
发生了什么事?我怎么能纠正这个?
答案 0 :(得分:1)
我有一段时间有类似的问题。使用Visual Studio为我的数据库生成一个模型导致所有类都是部分的,所以不是继承添加额外的功能(我试过并最终搞砸了)我只是为我想要的每个类添加了一个额外的部分延伸。这使EF保持高兴,也意味着当模型下次更新时,您的额外代码不会丢失。