【问题标题】:EntityDataSource with Code-First Entity Framework 4.1EntityDataSource 与 Code-First Entity Framework 4.1
【发布时间】:2023-04-02 13:47:04
【问题描述】:
我刚刚开始使用 Entity Framework 4.1 Code-First。我已经创建了我的课程和DbContext,它们工作得非常好。现在我想在EntityDataSource 的帮助下将我的ListView 绑定到我的实体,但不幸的是它无法识别任何可用的连接字符串!我认为 providerName 必须是 System.Data.EntityClient 才能工作,但我没有具体的实体模型可以参考...
我读到ObjectContext 可以从DbContext 中“改编”,而DbContext 又可以用来创建ObjectDataSource。但是,我想使用我的 DbContext 绑定到我的 ListView。有什么办法可以做到吗?
【问题讨论】:
标签:
entity-framework
entity-framework-4.1
ef-code-first
dbcontext
entitydatasource
【解决方案1】:
我很难理解您的问题...您想在实例化 Context 类时指定连接字符串,是吗?
您可以创建 DbContext 类的构造函数的重载,例如
public MyContext(string connString) : base (connString)
{
Database.SetInitializer(...
...
}
然后,在 Code-First 方法中,您实际上并不需要 ObjectContext,除非是超级高级场景,而且我猜数据绑定不是其中之一。要绑定到 Context 类中的集合,只需将其属性放在为您的屏幕设计的 ViewModel 类中,例如
public class MyViewModel
{
private MyContext _context;
public ObservableCollection<MyObject> MyObjects { get; set; }
public MyViewModel()
{
_context = new MyContext();
MyObjects = new ObservableCollection<MyObject>(_context.MyObjects.ToList());
}
}
然后您可以将 ListView 与该属性绑定,因为它已被引用。
希望对你有帮助,否则请提供更多详细信息。