相关疑难解决方法(0)

实体框架更新多对多关系 - POCO

我遵循两个实体RelayConfigStandardContact之间的多对多关系

实体:

public class RelayConfig : EntityBase, IDataErrorInfo {
    ...
    //Associations
    public virtual ICollection<StandardContact> StandardContacts { get; set; }
}


public class StandardContact :EntityBase, IDataErrorInfo {
    ...
    //Associations
    public virtual ICollection<RelayConfig> RelayConfigs { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试更新RelayConfig及其与StandardContact的关系.这是更新RelayConfig的代码.

public class RelayConfigRepository : GenericRepository<RelayConfig> {
    ....

    public void Update(RelayConfig relayConfig, List<StandardContact> addedContacts, List<StandardContact> deletedContacts) {
        context.RelayConfigs.Add(relayConfig);
        if (relayConfig.Id > 0) {
            context.Entry(relayConfig).State = EntityState.Modified;
        }

        addedContacts.ForEach(ad => relayConfig.StandardContacts.Add(ad));

        foreach (StandardContact standardContact in relayConfig.StandardContacts) {
            if (standardContact.Id > …
Run Code Online (Sandbox Code Playgroud)

entity-framework ef-code-first entity-framework-4.1

3
推荐指数
1
解决办法
6837
查看次数

类型'System.ObjectDisposedException'的异常

我有以下EF代码的第一个代码.它工作正常.但当我寻找'club2.Members'的价值时,它会说:

'club2.Members'抛出了'System.ObjectDisposedException'类型的异常.

消息是:

ObjectContext实例已被释放,不能再用于需要连接的操作.

我没有为Members属性设置值.没关系.但是它不应该在内部引起任何异常.

  1. 有没有办法克服这个例外?
  2. 删除此异常是否有助于提高性能?
  3. 为什么这个异常不会导致程序执行终止?

注意:我不需要俱乐部实体中的会员数据(在我打电话的时候).即使当时没有成员加入俱乐部.我只需要摆脱异常; 不使用预先加载来加载数据.如何避免异常

在此输入图像描述

namespace LijosEF
{

public class Person
{
    public int PersonId { get; set; }
    public string PersonName { get; set; }
    public virtual ICollection<Club> Clubs { get; set; }
}

public class Club 
{
    public int ClubId { get; set; }
    public string ClubName { get; set; }
    public virtual ICollection<Person> Members { get; set; }

}




//System.Data.Entity.DbContext is from EntityFramework.dll
public class NerdDinners : System.Data.Entity.DbContext
{

    public …
Run Code Online (Sandbox Code Playgroud)

.net c# entity-framework ef-code-first

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

SaveChanges()Entity Framework 4.1的问题

我在保存对数据库的更改时遇到问题.

我正在更新控制器中的模型A,但是当我使用SaveChanges()保存更改时,我最终在数据库中为B创建了一个重复的项目.

在调用UpdateModel()之后,我检查了Bs属性,它就像我预期的那样,在调用SaveChanges()后,如果我检查Bs属性,我将看到Id完全不同(新Id和新条目).

我的班级与此类似:

public class A
{
    [HiddenInput(DisplayValue = false)]
    public int AId { get; set; }

    public string Name { get; set; }

    public virtual ICollection<B> Bs{ get; set; }
}

public class B
{
    [HiddenInput(DisplayValue = false)]
    public int BId { get; set; }

    public string Name { get; set; }

    public virtual ICollection<A> As{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我的控制器是这样的:

    [HttpPost]
    public ActionResult Edit(A theA)
    {
        try
        {
           db.Entry(theA).State = EntityState.Modified;

           foreach (var item in theA.Bs)
           { …
Run Code Online (Sandbox Code Playgroud)

entity-relationship many-to-many entity-framework-4.1

2
推荐指数
1
解决办法
5955
查看次数