插入从数据库对象继承的对象在EF中不起作用

时间:2014-01-27 19:27:39

标签: c# asp.net-mvc entity-framework

我有这个对象:

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'.

发生了什么事?我怎么能纠正这个?

1 个答案:

答案 0 :(得分:1)

我有一段时间有类似的问题。使用Visual Studio为我的数据库生成一个模型导致所有类都是部分的,所以不是继承添加额外的功能(我试过并最终搞砸了)我只是为我想要的每个类添加了一个额外的部分延伸。这使EF保持高兴,也意味着当模型下次更新时,您的额外代码不会丢失。