1
이전과 같은 질문에 여러 번 대답했지만 확신 할 수 없었습니다.Entity Framework 5는 Include()와 관계를 가져 오지 않습니다.
엔티티가 기존 테이블에서 생성 된 MVC 4 응용 프로그램을 Entity Framework 5와 함께 구축하고 있습니다.
namespace RebuildingModel
{
using System;
using System.Collections.Generic;
public partial class StandardCodeTable
{
public StandardCodeTable()
{
this.StandardCodeTableTexts = new HashSet<StandardCodeTableText>();
}
public int TableCode { get; set; }
public string RefTableName { get; set; }
public virtual ICollection<StandardCodeTableText> StandardCodeTableTexts { get; set; }
}
}
namespace RebuildingModel
{
using System;
using System.Collections.Generic;
public partial class StandardCodeTableText
{
public int TableCode { get; set; }
public string LanguageCode { get; set; }
public string TextVal { get; set; }
public virtual StandardCodeTable StandardCodeTable { get; set; }
}
}
namespace RebuildingSite.Models
{
public class CodeTableJoined
{
public int TableCode { get; set; }
public string ReferenceTableName { get; set; }
public string LanguageCode { get; set; }
public string TextValue { get; set; }
}
}
나는이처럼 보이는 DAO를 가지고 : I는 다음과 같이 엔티티 클래스를
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RebuildingModel.Dao
{
public class CodeTableDao
{
public CodeTableDao() { }
public ISet<StandardCodeTableText> GetCode(string refTableName)
{
HashSet<StandardCodeTableText> codes = new HashSet<StandardCodeTableText>();
using (var db = new RebuildingTogetherEntities())
{
db.StandardCodeTableTexts.Include("StandardCodeTables");
var query = from c in db.StandardCodeTableTexts
where c.StandardCodeTable.RefTableName == refTableName
orderby c.TableCode
select c;
foreach (var item in query)
{
codes.Add(item);
}
}
return codes;
}
}
I는 다음과 같습니다 컨트롤러가 있습니다
namespace RebuildingSite.Controllers
{
public class CodeTableController : Controller
{
public ActionResult Index(string refTableName)
{
CodeTableDao dao = new CodeTableDao();
ICollection<StandardCodeTableText> codes = dao.GetCode(refTableName);
HashSet<CodeTableJoined> joins = new HashSet<CodeTableJoined>();
foreach (var code in codes)
{
CodeTableJoined join = new CodeTableJoined();
join.TableCode = code.TableCode;
join.LanguageCode = code.LanguageCode;
join.TextValue = code.TextVal;
join.ReferenceTableName = code.StandardCodeTable.RefTableName;
joins.Add(join);
}
ISet<string> refTableNames = dao.GetReferenceTables();
ViewBag.RefTableNames = refTableNames;
return View(joins);
}
}
}
I을 컨트롤러에 연결된보기를 실행하면 관계가 사용 된이 줄에서 ObjectDisposedException이 발생합니다.
join.ReferenceTableName = code.StandardCodeTable.RefTableName;
이것은 단순해야합니다. 내가 도대체 뭘 잘못하고있는 겁니까? 나는 많은 다른 곳에서, 심지어 여러 번 문맥으로부터 Include() 호출을 추가하려고했다.
또한 Linq 쿼리에서 명시 적 조인을 추가하려고 시도했습니다. 나는 EF에 그 관계를 가져올 수 없습니다. 대답에 내 의견을 복사
는 실제 쿼리에있을 포함해야 실제 쿼리에있을 포함 넣어? 'var query = from c from db.StandardCodeTableTexts.include ("StandardCodeTables"). 여기서 c.StandardCodeTable.RefTableName == refTableName orderby c.TableCode 선택 c; ' –
물론! 나는 그것이 단순한 무엇인지 알았다. 그것은 저에게 바보 같았습니다 - 지적 해 주셔서 고맙습니다. – Brad