使用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,它正在运行。
答案 0 :(得分:1)
实体框架成员应该是属性;我的意思是他们必须使用公开getter
和setter
方法:
改变这个:
public long Id;
到这一个:
public long Id { get; set; }