EF核心“是否添加”(如果不存在)通过嵌套(包含)属性查询?

时间:2019-10-13 22:03:11

标签: c# entity-framework lambda .net-core entity-framework-core

我对这种动态的lambda创作非常陌生。如果C#可以像JS / TS一样工作,那么这将很容易实现,但是不幸的是,它并非如此。现在,我的想法是做这样的事情:

User u = new User() { Email = "user@app.com", Password = "aaaaaa" };
UserMetadata m = new UserMetadata() { IdUser = u.Id, User = u, FirstName = "User" };

db.Users.AddIfNotExists(x => x.Email, u);
db.UserMetadatas.AddIfNotExists(x => x.User.Email, m);
db.SaveChanges();

请注意,只有在其嵌套属性User.Email 不匹配的情况下,我要在db.UserMetadatas.AddIfNotExists行中添加UserMetadata

我已经使用单个属性(它与User一起使用),但是当我尝试对UserMetadata进行操作时,它告诉我Email不属于{{ 1}}(这很有意义)。似乎代码正在跳过(或未创建)嵌套属性中的查找。

我的想法是有一个通用方法可用于任何实体,两个层次对我来说足够了。

我当前的代码:

UserMetadata

提前谢谢! :)

0 个答案:

没有答案