【发布时间】:2015-08-04 12:39:08
【问题描述】:
我正在尝试做一些简单的事情,但这在 EF 4.1 中不起作用,它在 EF 6 中起作用,但我无法更新版本,因为我需要在旧服务器中使用此应用程序并且不支持它。
这是我的代码:
chat = new Chat()
{
AdminId = 99
};
db.Chat.Add(chat);
db.SaveChanges();
var cp = new List<ChatPeople>();
foreach (int user in usersids)
{
cp.Add(new ChatPeople
{
ChatId = chat.Id,
UserId = user
});
}
cp.ForEach(c => db.ChatPeople.Add(c));
这是模型:
[Table("CHATS", Schema = "SCHEMA")]
public class Chat
{
[Column("ID")]
public decimal Id { get; set; }
[Column("ADMINID")]
public decimal AdminId { get; set; }
public virtual ICollection<ChatPeople> ChatPeople { get; set; }
public virtual ICollection<ChatHistory> ChatHistory { get; set; }
}
(我需要十进制 ID,因为 int 在 Oracle 中不起作用。)
我的问题是当我保存Chat 时,这不会在数据库中返回此注册表的当前 ID,而在 ChatPeople 中尝试执行此操作时ChatId = chat.Id, 我没有该值。在 DB 中,Chat 使用 AdminId = 99 和 Id = (Autonumeric-Identity) 保存正常
如何获取正在保存的注册表 ID?
【问题讨论】:
-
也许,我直到现在才找到答案,我在这里找到了答案stackoverflow.com/questions/14612813/…我以为这个问题是EF版本的
标签: c# .net database entity-framework