【发布时间】:2013-06-03 14:15:21
【问题描述】:
我有两个简单的类,User 和 Task:
class User
{
public int UserId { get; set; }
public string Name { get; set; }
public string Email { get; set; }
}
class Task
{
public int TaskId { get; set; }
public string Name { get; set; }
public DateTime CreatedAt { get; set; }
public virtual ICollection<User> Followers { get; set; }
}
Task 类有一个属性Followers,它是一个ICollection<User>
这里是数据库上下文类:
class MyContext : DbContext
{
public DbSet<User> Users { get; set; }
public DbSet<Task> Tasks { get; set; }
protected override void OnModelCreating(DbModelBuilder mb)
{
mb.Entity<User>().HasKey(u => u.UserId);
mb.Entity<Task>().HasKey(t => t.TaskId);
}
}
这是主程序中的代码:
var db = new MyContext();
var user = new User();
user.Name = "John Doe";
user.Email = "jd@email.com";
db.Users.Add(user);
db.SaveChanges();
var follower = db.Users.Where(u => u.Name == "John Doe").FirstOrDefault();
var task = new Task();
task.Name = "Make the tea";
task.CreatedAt = DateTime.Now;
task.Followers.Add(follower); // ERROR
db.Tasks.Add(task);
db.SaveChanges();
问题是我在尝试将追随者添加到任务时遇到错误。
Object reference not set to an instance of an object.
我做错了什么?
【问题讨论】:
-
Icollection是一个接口,改成list。 -
@Ofiris 请参阅此帖子以获取示例 -
ICollection是推荐的实现 stackoverflow.com/questions/6439425/… -
用户和任务是什么关系??是一对多吗?
-
看我的回答。可能是初始化问题
标签: c# .net entity-framework ef-code-first