2010-02-12 86 views
1

最近我开始将ADO.net应用程序移植到实体框架。我的表中有一些可选的列。使用ADO.net,我只是检查列的存在并获取它的值。实体框架中的可选列

if (MyTable.Columns.Contains("PerformPreCheck") && 
    DBNull.Value != MyRow[MyTable.Columns["PerformPreCheck"]]) 
{ 
     m_bPerformPreCheck = (bool)MyRow[MyTable.Columns["PerformPreCheck"]]; 
} 

我怎样才能做到与实体框架是一回事吗?

谢谢 苏雷什

回答

0

意味着你的实体被称为Foo和空列被称为PerformPreCheck

using(var context = new MyEntities()) 
{ 
    var f = context.Foos.First(); // or context.Foos.Where(foo => foo.Id == someId).First(), etc.... 
    m_bPerformPreCheck = f.PerformPreCheck.GetValueOrDefault(); 
} 
+0

嗨克雷格, 谢谢您的答复。在我的实体模型中,我有“PerformPreCheck”检查库,但在我的客户数据库中没有该列,因为它是可选的。它在“var f = context.Foos.First()”中失败。但是我上面给出的代码ADO.net代码完美地工作。我试图找到它的等价物。 谢谢, Suresh – jaklucky 2010-02-12 20:25:15

+0

你不能有一个数据库模式的变化,而不是一个实体模型。您必须保持数据库模式和实体模型同步。 – 2010-02-12 20:44:28

+0

谢谢你的回复。这可能会在现场发生。对我而言,这就像一个限制。我可以在ADO.net中做到这一点,没问题。我很遗憾现在转向实体框架。 – jaklucky 2010-02-12 21:16:26