查找方法throws值不能为null。参数名称密钥实体框架

时间:2013-01-04 05:33:39

标签: asp.net-mvc entity-framework

我使用EF 4。 使用此代码来测试我的模型的功能。

    using (var context = new CamelotDB())
    {
        Console.WriteLine("Starting User Repository Testing{0}",Environment.NewLine);
        Console.WriteLine("Creating Test User");
        DomainEntity userToAdd = new User()
        {
            EntityName = "Test User",
            EntityType = DomainEntity.eEntityType.User,
            Username = "TestUser",
            Password = "123",
            Email = "TestUser@Test.org",
            FirstName = "Test",
            LastName = "User",
            Phone = "123456789",
            EntityParentID = null,
        };

        Console.WriteLine("Saving user to database...");
        userToAdd = context.DomainEntities.Add(userToAdd);
        context.SaveChanges();

        Console.WriteLine("Fetching user from database...");
        int userID = userToAdd.EntityID;
        DomainEntity userToDelete = context.DomainEntities.Find(userID);

        Console.WriteLine("Removing the user...");
        context.DomainEntities.Remove(userToDelete);
        context.SaveChanges();

    } 

用户成功添加到数据库,我收回了userID。 当我尝试在

中使用Find()方法时
DomainEntity userToDelete = context.DomainEntities.Find(userID);

我收到以下错误: 值不能为null。参数名称密钥

我的事件试图打电话给下面的话:

DomainEntity userToDelete = context.DomainEntities.Find(2);

知道数据库中存在userID 2,但仍然有相同的异常。

1 个答案:

答案 0 :(得分:0)

以某种方式解决了这个问题...刚刚从EDMX中移除了关键属性并再次添加了保存更改,一切都恢复正常,这与EDMX生成有关...