如何在类库中使用实体数据模型

时间:2013-10-24 13:04:33

标签: c# asp.net entity-framework-4

我成功地使用实体数据模型将数据保存到Sql Server数据库,如下所示:

MEDIANEntities db = new MEDIANEntities();
tblCountry objTable = new tblCountry();
objTable.Name= txtName.Text.Trim();
objTable.CreatedDate = System.DateTime.Now;
db.AddTotblCountries(objTable);
db.SaveChanges();

现在的想法是在类库中使用EDM,以便它可以在其他项目中使用(基本上是层架构)。我创建了一个类库 - 'MedianContext',然后在其中创建了一个新的edmx文件 - 'MedianModel'。然后是另一个类库 - 'MedianDAL'。添加了MedianContext的引用。

无法访问objcontext和tb的属性。我该怎么办呢。 如果有帮助,在添加对MedianDAL的引用时,MediaContext.dll位于调试文件夹而不是Release文件夹中,如许多示例所示。

enter image description here

2 个答案:

答案 0 :(得分:1)

您是否尝试过Linq2Entities
e.g:

try
{
    using (var medianEntities = new MedianModel.MEDIANEntities())
    {
          //Do any LinqToEntity-Expressions
    }
}
catch(Exception)
{ 
    //ErrorHandling
}

这对我有用。 我还将我的.edmx文件放在另一个项目中,并添加了对此的引用。

修改

当然,您必须将此代码放入方法体中。
这是一个简单的例子:

public List<Map> GetAllMaps()
{
    var Maps = new System.Collections.Generic.List<Map>();

    try
    {
         using (var mapEntities = new Model.MapEntities())
         {
              var MyMaps= (from M in mapEntities.Maps
                               orderby M.Description
                               select M.MapID, M.Description);

             foreach (var Map in MyMaps)
             {
                   Maps.Add(Map);
             }
          }
          return Maps;
      }
      catch (System.Exception Exc)
      {
          Log.Err(string.Format("Error: {0}", Exc));
          throw new System.Exception(Exc.ToString());
      }
}

答案 1 :(得分:0)

可能是因为您正在尝试在课程的上下文中访问属性?为此类创建构造函数并从那里访问属性:

public Test
{
tb....
}