标签: entity-framework-4.1

我应该使用实体框架4.1和MVC3启用还是禁用动态代理?

有人可以提供一些建议或指出一些可以帮助做出这个决定的博客/文章吗?代理对我来说似乎很陌生,我对使用它们犹豫不决.我喜欢通过在我的模型中使用虚拟属性来控制延迟加载的能力,但这几乎是我能看到的所有好处.我的应用程序是一个简单的MVC Web应用程序,当实体遇到更改状态时,我不需要将任何挂钩连接到上下文中.

无论如何,这是我现在非常有限的利弊列表,让我知道如果我没有任何这个.

优点

  • 在"保存"或"更新"中,我与"Apply'Changes"无缝对接
  • 延迟加载配置非常简单.

缺点

  • 从来没有为我的实体使用代理,这是一种方法的改变,对我自己和团队成员来说似乎不舒服.
  • 调试很尴尬.
  • 如果我想要序列化/反序列化,则需要额外的代码
  • 在"保存"或"更新"时,代理必须是从上下文中检索的同一对象.

orm entity-framework dynamic-proxy ef-code-first entity-framework-4.1

68
推荐指数
2
解决办法
5万
查看次数

命名空间"System.Data"中不存在类型或命名空间名称"Entity"

我正在使用WS类,当我运行应用程序时它给了我错误:

The type or namespace name 'Entity' does not exist in the namespace 'System.Data' 
Run Code Online (Sandbox Code Playgroud)

我有一个参考System.Data;,System.Data.Entity; 但没有变化.我一直在收到错误.我也在web.config中行:

<compilation debug ="true" targetFramework="4.0"/>
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net web-services entity-framework-4.1

64
推荐指数
7
解决办法
10万
查看次数

首先使用EF代码的唯一键

我的项目中有以下模型

public class Category
{   
    public Guid ID { get; set; }
    [Required(ErrorMessage = "Title cannot be empty")]
    public string Title { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

而我正在尝试制作一个Title独特的密钥,我搜索解决方案,但找不到任何.可以建议我怎么做,拜托?

c# unique-key ef-code-first entity-framework-4.1

62
推荐指数
2
解决办法
7万
查看次数

ADO.NET DbContext Generator与ADO.NET Poco实体生成器(ObjectContext)

我即将开始实现一个项目的数据访问基础设施,该项目采用DDD方法构建(这是我第一次尝试DDD,所以要温和;-)).

我将使用Entity Framework.到目前为止,我正在研究朱莉·勒曼(Julie Lerman)在她的伟大着作" 编程实体框架 "(Programming Entity Framework)中使用的方法,其中使用了ADO.NET POCO实体生成器,对T4模板和一些更多自定义代码进行了一些更改.
今天我开始使用Database First方法阅读有关EF4.1和ADO.NET DbContext Generator的文章,我正在尝试决定应该选择哪一个.

DbContext和EF4.1的DDD方法似乎比POCO实体更好,更清晰,但我担心它会在不久的将来导致一些问题,因为EF4.1仍然在RC中.

ADO.NET团队博客,我知道EF4.1 包括:

  • 枚举支持
  • 空间数据类型支持
  • Code First中的存储过程支持
  • Code First中的迁移支持
  • Code First中的可定制约定

根据我的理解,由于我将使用Database First,因此未包含的功能数量较少.

总之,我的问题是:
我可以用EF4.1 DbContext Generator 替换POCO实体生成器吗?

entity-framework entity-framework-4 entity-framework-4.1

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

"无法删除数据库,因为它当前正在使用中".怎么修?

有这个简单的代码,我得到"不能删除数据库"test_db"因为它当前正在使用"(CleanUp方法),因为我运行它.

[TestFixture]
public class ClientRepositoryTest
{
    private const string CONNECTION_STRING = "Data Source=.;Initial Catalog=test_db;Trusted_Connection=True";
    private DataContext _dataCntx;

    [SetUp]
    public void Init()
    {
        Database.SetInitializer(new DropCreateDatabaseAlways<DataContext>());
        _dataCntx = new DataContext(CONNECTION_STRING);
        _dataCntx.Database.Initialize(true);
    }

    [TearDown]
    public void CleanUp()
    {
        _dataCntx.Dispose();
        Database.Delete(CONNECTION_STRING);
    }
}
Run Code Online (Sandbox Code Playgroud)

DataContext有一个这样的属性

 public DbSet<Client> Clients { get; set; }
Run Code Online (Sandbox Code Playgroud)

如何强制我的代码删除数据库?谢谢

database unit-testing entity-framework database-connection entity-framework-4.1

58
推荐指数
4
解决办法
4万
查看次数

检查实体框架中是否存在实体的一般方法?

类似于检查实体框架中是否存在对象的最佳方法?

我正在寻找一种通用的方法来检查一个实体DbSet.像这样的东西,这是行不通的:

private DbContext DbContext { get; set; }

private DbSet<T> DbSet { get; set; }

public Boolean Exists(T entity) {
    return ((from item in this.DbSet
             where item == entity
             select item).Count() > 0);
}
Run Code Online (Sandbox Code Playgroud)

该行where item == entity适用于LINQ to SQL,但显然不适用于LINQ to Entities.由于实体可能具有不同的密钥,因此我们不能将它们全部继承自具有已知密钥的公共抽象以进行比较.

我可以做到这一点,但我担心将异常作为验证过程的表现这也不起作用,因为只要实体被分离,OriginalValues就无法获得属性:

public Boolean Exists(T entity) {
    try {
        var current = this.DbContext.Entry(entity).OriginalValues;
        // Won't reach this line if the entity isn't in the database yet
        return true;
    }
    catch …
Run Code Online (Sandbox Code Playgroud)

c# generics entity-framework-4.1

57
推荐指数
2
解决办法
6万
查看次数

为什么.Contains慢?通过主键获取多个实体的最有效方法?

通过主键选择多个实体的最有效方法是什么?

public IEnumerable<Models.Image> GetImagesById(IEnumerable<int> ids)
{

    //return ids.Select(id => Images.Find(id));       //is this cool?
    return Images.Where( im => ids.Contains(im.Id));  //is this better, worse or the same?
    //is there a (better) third way?

}
Run Code Online (Sandbox Code Playgroud)

我意识到我可以做一些性能测试来比较,但我想知道是否实际上有比两者更好的方法,并且我正在寻找一些启示,这两个查询之间的区别是,如果有的话,一旦它们一直存在"翻译".

.net c# linq entity-framework entity-framework-4.1

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

更好的方法来查询数据页面并获得实体框架4.1中的总计数?

目前,当我需要运行将使用w/paging的查询时,我会这样做:

//Setup query (Typically much more complex)
var q = ctx.People.Where(p=>p.Name.StartsWith("A"));

//Get total result count prior to sorting
int total = q.Count();       

//Apply sort to query
q = q.OrderBy(p => p.Name);  

q.Select(p => new PersonResult
{
   Name = p.Name
}.Skip(skipRows).Take(pageSize).ToArray();
Run Code Online (Sandbox Code Playgroud)

这有效,但我想知道是否有可能在使用linq时提高效率更高效?我想不出一种方法可以使用存储过程将数据检索的计数与数据检索结合到数据库中.

entity-framework entity-framework-4 c#-4.0 entity-framework-4.1

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

DbContext线程安全吗?

我想知道DbContext该类是否是线程安全的,我假设它不是,因为我正在执行并行访问DbContext我的应用程序中的并行线程,我得到了许多锁定异常和其他看起来可能与线程相关的东西.

直到最近我还没有收到任何错误...但直到最近我还没有访问DbContext线程.

如果我是对的,人们会建议什么作为解决方案?

c# thread-safety entity-framework-4.1

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

实体框架4.1虚拟属性

如果我在我的模型中声明实体关系为虚拟,则不需要Include在我的LINQ查询中使用该语句,对吧? -

例如:这是我的模型类:

public class Brand
{
    public int BrandID { get; set; }
    public string BrandName { get; set; }
    public string BrandDesc { get; set; }
    public string BrandUrl { get; set; }

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

现在,对于上面的模型类,我不需要使用var brandsAndProduct = pe.Brands.Include("Products").Single(brand => brand.BrandID == 22);.

相反,我可以使用简单的var brandsAndProduct = pe.Brands.Where(brand => brand.BrandID == 22);,我将在访问时自动使相关实体可用.

我的理解是正确的吗?

另外,请告诉我在什么情况下我应该更喜欢一个?

entity-framework-4.1

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