2

我正在学习 RavenDB 并熟悉事物的工作方式。我不明白的一件事是如何将 raven 创建的 id 保存到属性中。

public class User
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string ID { get; set; } //This will be null when I save object to DB I want it to be same as generated
}

[TestMethod]
public void TestSaving()
{
    using (var session = documentStore.OpenSession())
    {
        var user = new User { FirstName = "John", LastName = "Doe" };
        session.Store(user);
        session.SaveChanges(); //I want that property to save that id that raven created: Users/65
    }
}
4

2 回答 2

6

我认为 Raven 中查找身份属性的默认约定是“Id”并且区分大小写。尝试将您的属性重命名为 ID,而不是 ID。

于 2012-12-21T02:50:22.140 回答
1

再看一遍。拨打电话后,session.Store(user)您会立即发现该ID物业已经为您设置好了。甚至在SaveChanges()被调用之前。

更新

对不起,我没有注意到你的财产的外壳。Raven 的默认约定是查找名为“Id”的属性——区分大小写。如果你想要一个不同的约定,你可以改变 raven 的默认值:

documentStore.Conventions.FindIdentityProperty = x => x.Name == "ID";

您可以在此处阅读有关默认约定的更多信息

于 2012-12-21T00:07:25.843 回答