如何将Caliburn.Micro MVVM框架与Entity Framework结合在WPF应用程序中的指导说明在哪里?

4
我该如何将Caliburn.Micro MVVM与Entity Framework集成到一个新的WPF 4应用程序中?迄今为止,我还没有找到教程。我不打算使用Silverlight或RIA服务。该应用程序(我的公司的CRM)可能随着时间的推移而增长。我计划使用PRISM进行模块化,并希望将这三个框架结合起来。
请注意,我不会使用EF Code First。EDM将通过将表拖到设计表面以生成实体来创建。为了从Caliburn.Micro受益,我认为所有实体属性都需要被包装以利用NotifyOfPropertyChange。如果是这样,我希望能够找到某种代码生成工具,使其更容易。也许我需要将EF包装在存储库中?如果您可以建议一些资源来帮助我回答这些问题,那将非常感激。
谢谢!
编辑:我在这里发布了相关问题

我认为Caliburn.Micro是MVVM框架dll,据我所知,这个框架应该处理视图和视图模型,NotifyOfPropertyChanged也应该是用于视图模型。为了实现模块化,我按照以下方式操作:视图 --> 视图模型 --> BLL --> DAL,我的DAL实际上是EF,希望这可以帮到您。 - Musaab
2个回答

3
MVVM模式不关心数据访问方法,也不关心数据访问方法是否符合MVVM模式。您可以从编写ViewModel中的查询开始,然后稍后使用repo模式进行重构。
在PRISM部分和组合3个框架方面,实际上不需要Prism。请查看Caliburn Micro源代码下载中提供的HelloScreens示例。客户端项目中有三个子文件夹/Customer /Orders和/Settings。它们基本上是模块,可以分别分离成单独的项目。 这里 是相关主题的文章。
我喜欢CM,但您可能还要检查一下Lightswitch,因为它是公司的CRM。
编辑: 找到您喜欢的存储库模式和EF的示例,然后在您的ViewModel中使用DI:
public class CustomerViewModel : Screen
{
     public IRepository CustomerRepo { get; set; }
     public CustomerViewModel(IRepository customerRepo)
     {
          Customer = customer
     }

     private BindableCollection<Customer> _customers;
     public BindableCollection<Customer> Customers
     {
         get { return _customers; }
         set
         {
             _customers = value;
             NotifyOfPropertyChange(() => Customers);
         }
     }

     protected override void OnActivate()
     {
          base.OnActivate();

          Customers = CustomerRepo.GetAll();
        }   
}

您提供了一些很好的信息。但是,我真的希望找到逐步说明或参考应用程序的链接,显示EF和CM的组合。我想看到上下文创建和过滤以及实体属性如何包装。我想了解是否可以通过将整个实体(或ObjectContext)作为ViewModel的属性公开来简化开发,类似于此方式:http://kboek.blogspot.com/2011/01/activerecord-caliburn-micro-and-one.html - DeveloperDan
过滤和包装实体属性是什么意思? - Derek Beattie
通过过滤,我想返回一部分客户或者只有一个客户。通过避免包装属性,我的意思是我不想为每个数据库字段编写getter和setter方法,只是为了调用NotifyOfPropertyChange。我已经尝试过,并发现可以通过将我的实体(模型)作为ViewModel的属性来避免编写数百万个新属性。但这需要在XAML中设置DataContext和所有绑定语句。我尝试的每一种方法都引发了新的问题。这就是为什么我正在寻找一个详细的教程或示例,使用EF4作为模型或DAL。谢谢。 - DeveloperDan

-1

这里有一个教程链接。我仅仅通过那个教程就能够编写一个相当复杂的应用程序。


哪个教程先生? - Ahmed Ahmed Sayed

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接