【发布时间】:2018-08-02 22:34:34
【问题描述】:
考虑实体框架中这种简单的一对多关系。一个组织拥有许多产品。
public class Product
{
public int Id { get; set; }
[StringLength(20)]
public string Title { get; set; }
[StringLength(300)]
public string Description { get; set; }
public float Price { get; set; }
public DateTime CreationDate { get; set; }
public virtual Organisation Organisation { get; set; }
public Product()
{
CreationDate = DateTime.Now;
}
}
public class Organisation
{
public int Id { get; set; }
[StringLength(20)]
public string Title { get; set; }
[StringLength(400)]
public string Description { get; set; }
public DateTime CreationDate { get; set; }
public virtual ICollection<Product> Products { get; set; }
}
如果我有一个(发布)api 调用,接受正文中的原始数据(json 格式的文本),这允许用户在同一个调用中创建一个组织和任意数量的产品。如何使用 Entity Framework 将这些数据正确保存到数据库中?
据我所知,我正在使用延迟加载(由于在模型中设置关系时使用虚拟关键字),所以它不应该自动处理关系吗?如果我将数据保存在下面的控制器操作中(调用后的控制器操作)。它会起作用吗?如果不是,那么使用实体框架保存包含另一个模型列表的模型的适当/最佳实践方法是什么。
public IHttpActionResult CreateOrganisation(Organisation org)
{
db.Organisations.Add(org);
db.SaveChanges();
return Ok(org);
}
在文档中似乎真的找不到这个?
【问题讨论】:
-
会有用吗? - 你试过了吗?
-
它是否有效并不重要。我只是把它放在那里向你展示我的意思。我正在寻找有关“最佳实践”方式的具体示例。
-
如果可行 - 这是最佳实践。如果稍后您遇到问题(性能、可扩展性、可读性......) - 您将对其进行重构以消除问题,并且该代码将成为您的应用程序的最佳实践。最佳实践都是关于具体上下文的。在您提供的示例中,它应该足够有效且易于理解。
-
我理解你的观点,但这不是真的。仅仅因为您不知道更好/更有效的做事方式,并不意味着它不存在。使用您的逻辑,每个解决方案都是最好的,直到您了解一个新的解决方案。如果这是真的,请将这篇文章视为我学习更好的方法。
-
正如我所说的编程就是上下文。在您的问题的背景下 - 添加新组织就足够了。给我们一些具体的问题,可能会有更好的方法,
标签: c# .net entity-framework asp.net-web-api2