作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何在 Entity Framework 中使用数据库优先方法使用存储库模式。我在浏览互联网上可用的资源时得到了一些想法,但对于实时应用程序,我不确定如何在从数据库优先方法自动生成的类上实现存储库模式。
我已经浏览了 SO 中的一些链接,但我没有得到任何明确的想法。我是这个新手。
提前致谢。
最佳答案
代码生成工具只会修改映射到 XML 文件的类。你有几个选择:
1)您可以使用部分类扩展映射类。使用工具更新代码时,自动化工具不会修改部分类。
2)您还可以将数据注释和实体配置处理到配置文件,只是要小心,因为在某些情况下它们可能会发生冲突。下面是一个片段:
public class YourClassConfiguration : EntityTypeConfiguration<YourClass>
{
public YourClassConfiguration()
{
ToTable("YourTable");
HasKey(e => e.Property1);
Property(e => e.Property1).HasColumnName("MyName").HasMaxLength(30);
}
}
public class EntityRepository<T> : IRepository<T>, IDisposable where T
: class, IEntity
{
private readonly DbSet<T> dbset;
private readonly DbContext _context;
private readonly bool _lazyLoadingEnabled = true;
public EntityRepository(DbContext context, bool lazyLoadingEnabledEnabled)
: this(context)
{
_lazyLoadingEnabled = lazyLoadingEnabledEnabled;
}
public EntityRepository(DbContext context)
{
_context = context;
_context.Configuration.LazyLoadingEnabled = _lazyLoadingEnabled;
dbset = context.Set<T>();
}
public void Add(T entity)
{
dbset.Add(entity);
_context.SaveChanges();
}
public void Update(T entity)
{
var originalValues = FindOne(x => x.Id == entity.Id);
_context.Entry(originalValues).CurrentValues.SetValues(entity);
_context.SaveChanges();
}
public void Remove(T entity)
{
dbset.Remove(entity);
_context.SaveChanges();
}
public List<T> Find(System.Linq.Expressions.Expression<Func<T, bool>> predicate)
{
return dbset.Where(predicate).ToList();
}
public T FindOne(System.Linq.Expressions.Expression<Func<T, bool>> predicate)
{
return dbset.FirstOrDefault(predicate);
}
public List<T> FindAll()
{
return dbset.ToList();
}
}
public interface IRepository<T>
where T : class, IEntity
{
void Add(T entity);
void Update(T entity);
void Remove(T entity);
T FindOne(Expression<Func<T, bool>> predicate);
List<T> Find(Expression<Func<T, bool>> predicate);
List<T> FindAll();
}
关于.net - 如何在 Entity Framework 中使用数据库优先方法使用存储库模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30374791/
我是一名优秀的程序员,十分优秀!