我能够立即获得主动记录。入门的说明很棒,而且我很快就建立了一个网络服务,可以让我在现有数据库中创建和阅读小部件。太棒了。不过,在更新时,事情崩溃了。我会在客户端上编辑对象并将其发送回服务,但是当服务保存时,它将创建一个新的。我认为这意味着我需要重新进行数据库并分配向客户提供服务的值,但我的老板说这将是骇人听闻的,并且存储库模式会更好,因为可以使用POCOS。不幸的是,这就是我得到的指导的程度。所以这是我的问题。

  1. T4模板仅适用于主动记录,还是它们也会为您建立您的简单存储库。例如,有什么东西会使我的Pocos加入,还是它们都“滚动您自己”?

  2. 有人看到了亚音速3级解决方案的工作示例吗?我已经读过有关它们的信息,但是是否有任何样本在周围流动?

主动记录样品/屏幕截图真的很容易遵循,因为它们从我开始的同一时间开始。简单的存储库似乎更多地集中在迁移和其他高级功能上,并且因为这些东西对我来说是新的,我不知道足够连接点。

啊。没有什么比有学习某些东西并在本周末之前运行的截止日期了。即使是我应该阅读的手册的链接,也欢迎任何建议,即使是RTFM。

提前致谢

有帮助吗?

解决方案

如果要使用存储库模式,则可以使用 LINQ模板 或使用不需要任何T4模板的简单存储库。

使用简单的存储库,您可以自己创建Pocos。如果您选择:

var repository=new SimpleRepository(SimpleRepositoryOptions.RunMigrations);

但是如果你问我,我会选择 SimpleRepositoryOptions.None 并自己更新数据库。

无论如何,您对ActivereCord模板的最初问题可能很容易修复。我建议您的ActivereCord对象在客户端序列化并在服务器上进行了序列化。

ActivereCord对象的默认构造函数调用了看起来像这样的INIT函数:

    void Init(){
        TestMode=this._db.DataProvider.ConnectionString.Equals("test", StringComparison.InvariantCultureIgnoreCase);
        _dirtyColumns=new List<IColumn>();
        if(TestMode){
            <#=tbl.ClassName#>.SetTestRepo();
            _repo=_testRepo;
        }else{
            _repo = new SubSonicRepository<<#=tbl.ClassName#>>(_db);
        }
        tbl=_repo.GetTable();
        SetIsNew(true);
        OnCreated();       

    }

如您所见,内部存储库是创建的,并且 SetIsNew(true) 被执行。您唯一要做的就是致电 myitem.SetIsNew(false) 在对象被选度值填充后。我想这足以告诉亚sonic在保存过程中进行更新查询。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top