键未定义异常代码第一个模型

时间:2014-03-17 09:50:34

标签: c# entity-framework ef-code-first

使用nuget(6.0)安装2的已安装实体框架项目包含模型和控制台应用程序的类库,两者都安装了EF

我有以下型号

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;

namespace IdeaGen.Models
{
    public class User
    {
    [Key]
    public long Id;
    public UserStatus Status;
    public ICollection<UserActivityLog> Logs { get; set; }
    public ICollection<UserMailerLog> MailerLogs { get; set; }
    [MaxLength(255)]
    public string Email { get; set; }
    public DateTime CreatedAt { get; set; }

    public enum UserStatus
    {
        Pending
    }
    public User()
    {
        this.Status = UserStatus.Pending;
        this.CreatedAt = DateTime.Now;

 //            this.Id = Guid.NewGuid();
        this.Logs = new List<UserActivityLog>();
        this.MailerLogs = new List<UserMailerLog>();
    }


    }
}

我尝试使用控制台应用程序首次保存到数据库

class Program
{
    static void Main(string[] args)
    {
        var session = new Session();
        var user = new User{Email="test@test.com"};
        Console.WriteLine((user.Id));

        session.Users.Add(user);
        session.SaveChanges();
        Console.WriteLine("Done!");
        Console.Read();

    }
}

我在Users.Add(用户)上遇到异常 用户:EntityType:EntitySet'Users'基于没有定义键的'User'类型。

我最初将密钥ID定义为GUID,还添加了一个显式[key]属性以尝试使其工作。 我缺少什么想法?设置中的东西?我安装了sql server express,它正在运行。

1 个答案:

答案 0 :(得分:1)

实体框架成员应该是属性;我的意思是他们必须使用公开gettersetter方法:

改变这个:

public long Id;

到这一个:

public long Id { get; set; }