c# - Entity Framework - 添加行多对多表而无需加载导航属性

标签 c# many-to-many entity-framework-core

目前我的数据模型非常简单。你有用户,你有餐馆。两者之间是一种称为“评论”的多对多关系。

当我想向数据库添加评论时,我必须先检索用户对象和餐厅对象,然后才能保存评论对象。这是通过以下代码完成的:

// The 'review' object is the object coming as parameter.
var restaurant = await _context.Restaurants.FindAsync(review.RestaurantId);
var user = await _context.Users.FindAsync(review.UserId);

var newReview = _context.Reviews.Add(new DataService.Entities.Review
{
    // setting other values
    Restaurant = restaurant,
    User = user
}).Entity;

await _context.SaveChangesAsync();

我的 Review 类如下所示:

public class Review
{
    // Other properties...
    public User User { get; set; }
    public Restaurant Restaurant { get; set; }
}

我的用户和餐厅类别都包含评论列表。

我很确定有更好的方法来做到这一点,因为我不想加载两个对象只是为了设置为导航属性。我只是不知道该怎么做。

我正在使用 .Net core 2.0 和 Entity Framework Core。

最佳答案

public class Review
{
    [Key]
    public int ReviewId { get; set; }

    // Other properties...
    [ForeignKey("User")]
    public int UserId{get; set;}
    public User User { get; set; }

    [ForeignKey("Restaurant ")]
    public int RestaurantId {get; set;}
    public Restaurant Restaurant { get; set; }
}

这样,您只需设置 UserId 和 RestaurantId,而不必自己加载 User 或 Restaurant

关于c# - Entity Framework - 添加行多对多表而无需加载导航属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47598073/

相关文章:

c# - EF Core - 类中的多对多关系

c# - 如何使用 Entity Framework Core 1.1 实现自引用多对多关系?

c# - 无法理解从此 Entity Framework 查询生成的 SQL

c# - 如何在windows phone中使用隔离存储将数据传递给后台代理?

c# - 在数据网格中显示记录需要时间!

c# - 如何在 C# 中混合文本框中的单词顺序?

mysql - 动态自引用多对多关系

python - Django - 有没有办法在我的项目的 signals.py 文件中获取当前登录的用户?

c# - ThenInclude 不适用于 Entity Framework LINQ 查询

entity-framework - EntityFrameworkCore 相当一个 dbcontext 或者应该在 .Net Core 中分离 DbContext 像有界上下文以获得性能