【问题标题】:Entity Framework 4.1 dont generate Id when save dataEntity Framework 4.1 保存数据时不生成 Id
【发布时间】: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?

【问题讨论】:

标签: c# .net database entity-framework


【解决方案1】:

尝试在您的 ID 上方添加属性 [Key] 这应该将其设置为由 EF 生成的表的主键。

    [Key]
    [Column("ID")]
    public decimal Id { get; set; }  

【讨论】:

  • 感谢 John Id 有 Key 属性,我只需要放置其他属性 [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 就可以了。
【解决方案2】:

我需要把这个其他属性 [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 和工作正常。

在这篇文章中回答: Entity Framework Code First Using One column as Primary Key and another as Auto Increment Column

最后:

        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        [Column("ID")]
        public decimal Id { get; set; }

【讨论】:

    猜你喜欢
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多