Последний вставленный идентификатор с EF 4.1, MVC 3 - PullRequest
0 голосов
/ 04 августа 2011

Я использую asp.net mvc 3 и EF 4.1 с Visual Studio 2010, и я новичок в этом.

У меня проблема с последним вставленным идентификатором. у меня есть две таблицы в моей БД "points_Order" и "points_OrderDetails".

                            db.Order.Add(po);
                            db.SaveChanges();
                           //second thing i have tried
                            var orderID = (from oi in db.Order
                                           select oi.ID)
                                           .Max(i => i);
                           // and this first thing
                            pod.OrderID = po.ID;
                            pod.OrderID = orderID;
                            db.OrderDetails.Add(pod);
                            db.SaveChanges();

контекстный класс:

public class points_Order {
    [Key]
    public int ID { get; set; }
    public string Owner { get; set; }
    public DateTime Date { get; set; }
    public byte Status { get; set; }
    public int Total { get; set; }
    //public virtual points_OrderDetails OrderDetail { get; set; }
}

public class points_OrderDetails {
    [Key]
    public int OrderID { get; set; }
    public string OrderType { get; set; }
    public int Amount { get; set; }
    public int ItemID { get; set; }
    public int ItemRecord { get; set; }
    public string ItemCode { get; set; }
    public byte Plus { get; set; }
    public byte Degree { get; set; } 
    public string Kind { get; set; }
    public string Sex { get; set; }
    public string Race { get; set; }
    public string Tier { get; set; }
    public string SetItem { get; set; }
    public string SOX { get; set; }
    //public Blues Blue { get; set; }
}

public DbSet<points_Order> Order { get; set; }
public DbSet<points_OrderDetails> OrderDetails { get; set; }

я получаю сообщение об ошибке "{" Невозможно вставить значение NULL в столбец 'OrderID', таблица 'db.dbo.points_OrderDetails'; столбец не допускает пустых значений. INSERT завершается неудачей. \ R \ nОперация завершена. "}"

что я могу сделать? я делаю что-то не так?

1 Ответ

2 голосов
/ 04 августа 2011

Если вы определяете отношение из заказа -> детали заказа в вашей модели, оно должно работать следующим образом:

po.Details.Add(pod); // or pod.Order = po;
db.Order.Add(po);
db.SaveChanges();

EF должен выяснить отношения для вас, нет необходимости устанавливать ID вручную.

ОБНОВЛЕНИЕ: вы пытаетесь сделать что-то, что не поддерживается. У вас есть однозначное сопоставление; EF не поддерживает его так, как вы собираетесь (общий первичный ключ). См. http://weblogs.asp.net/manavi/archive/2011/05/01/associations-in-ef-4-1-code-first-part-5-one-to-one-foreign-key-associations.aspx для объяснения того, как моделировать один в один в EF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...