相关疑难解决方法(0)

ASP.NET MVC - 附加"MODELNAME"类型的实体失败,因为同一类型的另一个实体已具有相同的主键值

简而言之,在POSTing包装器模型期间抛出异常并将一个条目的状态更改为"已修改".在更改状态之前,状态设置为'Detached'但调用Attach()会产生相同的错误.我正在使用EF6.

请在下面找到我的代码(模型名称已更改,以便于阅读)

模型

// Wrapper classes
        public class AViewModel
        {
            public A a { get; set; }
            public List<B> b { get; set; }
            public C c { get; set; }
        }   
Run Code Online (Sandbox Code Playgroud)

调节器

        public ActionResult Edit(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }

            if (!canUserAccessA(id.Value))
                return new HttpStatusCodeResult(HttpStatusCode.Forbidden);

            var aViewModel = new AViewModel();
            aViewModel.A = db.As.Find(id);

            if (aViewModel.Receipt == null)
            {
                return HttpNotFound();
            }

            aViewModel.b = db.Bs.Where(x => x.aID == id.Value).ToList();
            aViewModel.Vendor = db.Cs.Where(x => x.cID …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc entity-framework

118
推荐指数
7
解决办法
14万
查看次数

代码优先:独立协会与外国关键协会?

每次我开始研究一个新项目时,我都会和自己进行一场心理辩论,而我正在设计我的POCO.我看过很多教程/代码示例似乎都支持外键关联:

外键关联

public class Order
{
    public int ID { get; set; }
    public int CustomerID { get; set; } // <-- Customer ID
    ...
}
Run Code Online (Sandbox Code Playgroud)

独立协会相反:

独立协会

public class Order
{
    public int ID { get; set; }
    public Customer Customer { get; set; } // <-- Customer object
    ...
}
Run Code Online (Sandbox Code Playgroud)

我以前使用过NHibernate,并且使用了独立的关联,它们不仅感觉更多OO,而且(延迟加载)的优势在于可以让我访问整个Customer对象,而不仅仅是ID.例如,这允许我检索Order实例,然后Order.Customer.FirstName无需显式地进行连接,这非常方便.

所以回顾一下,我的问题是:

  1. 使用独立关联有任何明显的缺点吗?和...
  2. 如果没有,那么使用外键关联的原因是什么?

entity-framework poco

100
推荐指数
3
解决办法
3万
查看次数

在 EF Core 5 中,如何通过仅设置外键 ID 而不先查询来插入具有多对多关系的实体?

另一个表包含具有众所周知 ID 的参考数据。用例是从文件中读取数据,创建实体,然后批量插入它们。我不需要先查询任何内容,因此所有实体都与上下文“断开连接”。

简单的例子:

public class Post
{
    public int ID { get; set; }
    public string Text { get; set; }
    public virtual ICollection<Tag> Tags { get; set; } 
}

public class Tag
{
    public int ID { get; set; }
    [Required]
    public string Label { get; set;}
    public virtual ICollection<Post> Posts { get; set; } 
}
Run Code Online (Sandbox Code Playgroud)

第一次尝试

List<Post> posts = new List<Post>();

loop
  var post = new Post { Text = "some text"});
  post.Tags.Add(new Tag {ID = 1}); …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework-core .net-core

8
推荐指数
1
解决办法
2853
查看次数

插入新实体而不创建子实体(如果存在)

我使用EF代码优先,我有这样的模型:

public class Product
{
    [Key]
    public int Id { get; set; }

    [Required]
    public string Name { get; set; }

    public Customer Customer { get; set; }
}

public class Customer 
{
    public Customer ()
    {
        Products = new List<Product>();
    }

    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int Id { get; set; }

    // more stuff snipped...

    public ICollection<Product> Products{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我收到了客户ID以及产品ID列表.当产品在DB中不存在时,我想添加它:

    var newProduct = new Product{ Id = id, Name = "<no name yet>", Customer = customer }; …
Run Code Online (Sandbox Code Playgroud)

c# orm entity-framework

5
推荐指数
1
解决办法
3092
查看次数