我有一个非常通用的存储库,可以为我的许多业务实体执行基本的CRUD.实体enherit形成一个通用对象,它包含我为所有对象维护的几个字段.例如.ModifiedBy,CreatedBy,CreatedDate,ModifiedDate.
在任何更新/保存之前,将始终设置这些字段ModifiedBy和CreatedBy.
我的问题是:有没有办法从我的存储库中的MVC Web应用程序访问Identity对象?我希望将modifiedby设置为身份用户,以便一次性更新?
最好的问候,罗德
我目前的观点是存储库应该包含特定于实体的修改方法,如添加,删除等.而UnitOfWork应该只包含与它相关的方法,如Commit(也称为SaveChanges,SubmitChanges)和Rollback(也称为作为ClearChanges).但Martin Fowler在他关于UnitOfWork的文章中建议将所有修改方法添加到UnitOfWork中.
那么现在哪种方式更好,在EF和NHibernate的世界?
更新. 我应该注意,即使采用我更好的方法,最后通过存储库的所有修改都会进入内置于EF Context或NHibernate Session的UnitOfWork.而我的UnitOfWork更像是UnitOfWorkManager(它管理内部ORM UnitOfWork).
我刚刚将trac从0.11更新为0.12,因为多存储库浏览.在svn同步自动工作之前,但是现在我必须进入管理面板并输入repository resync *命令,有没有办法自动执行此操作?
我需要symfony中的doctrine帮助,我想扩展/自定义一个实体存储库...所以我在bundle的Respository文件夹中创建了一个类(它不存在),但我不知道还有什么从EntityRepository扩展类的功能.
这是代码:
<?php
class InvitadoRepository extends EntityRepository
{
public function findOneByIdJoinedToCategory($id)
{
$query = $this->getEntityManager()
->createQuery('
SELECT p, c FROM AcmeStoreBundle:Product p
JOIN p.category c
WHERE p.id = :id'
)->setParameter('id', $id);
try {
return $query->getSingleResult();
} catch (\Doctrine\ORM\NoResultException $e) {
return null;
}
}
}
?>
Run Code Online (Sandbox Code Playgroud)
所以这是它在我的项目中的样子:
没有接口实现存储库模式有什么不好?
存储库 - 类
public class WebRepository<T>
{
private readonly Type persitentType = typeof(T);
public virtual T GetById(int id)
{
return NHibernateSession.Get<T>(id);
}
public virtual List<T> GetAll()
{
return GetByCriteria();
}
public List<T> GetByCriteria(params ICriterion[] criterion)
{
ICriteria criteria = NHibernateSession.CreateCriteria(persitentType);
foreach (ICriterion criterium in criterion)
criteria.Add(criterium);
return criteria.List<T>() as List<T>;
}
public T Save(T entity)
{
NHibernateSession.Save(entity);
return entity;
}
public T SaveOrUpdate(T entity)
{
NHibernateSession.Update(entity);
return entity;
}
public void Delete(T entity)
{
NHibernateSession.Delete(entity);
}
private ISession NHibernateSession …Run Code Online (Sandbox Code Playgroud) 我已经按照本教程"使用Git管理网站",使用Tower提交并将我的本地存储推送到远程服务器.通过以下消息推送成功:
Pushing to ssh://user@mysite.com/~/git/tprevo.git
stdin: is not a tty
Counting objects: 40, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (37/37), done.
Writing objects: 100% (40/40), 171.95 KiB, done.
Total 40 (delta 3), reused 0 (delta 0)
To ssh://user@mysite.com/~/git/tprevo.git
* [new branch] master -> production
updating local tracking ref 'refs/remotes/production/production'
Successfully created tracking connection.
Run Code Online (Sandbox Code Playgroud)
我已经验证我的post-receive挂钩正在执行,但该checkout命令没有将推送的代码添加到我认为我已设置为我的工作目录的内容中.我一直试图弄清楚这一点.
后得到:
#!/bin/sh
GIT_WORK_TREE=/home/tprevo/public_html/tprevo git checkout -f
Run Code Online (Sandbox Code Playgroud)
我是Git的新手,非常热衷于学习.调试这个的最佳方法是什么?
我正在从表中选择一些数据,其中包含与表有关系A的列value和类型,B其中有一列coef包含(-1,0,1)
从AI中检索时想要将valuewith 乘以coef.
我目前使用的Team Foundation Server作为source control,然而,它的数据库位于我的电脑上,我希望它是某处在互联网上,在一个小的免费云可能.
是否有免费source control系统,内置VS2012支持和免费存储库存储?这些是什么?
我有一点谷歌搜索,但有点难以察觉是系统支持互联网托管的存储库和VS2012支持.我需要真实用户的意见.
我找不到托管最新版oauth gem的存储库(v 0.4.7).
我有一个pelle/oauth github存储库,它有0.4.3的主机,并且链接到所谓的最新的oauth/oauth-ruby,它已经关闭了.
我错过了什么,或者现在这个存储库是否已经离开网格?
我有一个项目坐在档案馆里.项目和文件由其他人提供.该项目不使用版本控制系统.我想打开项目并用版本化装饰它.我想在原地进行,这样我就可以进行更改,然后svn diff查看我的更改(并为修补程序创建差异).
当我尝试在解压缩的库上进行版本控制时,我得到以下内容:
$ svnadmin create
svnadmin: E205000: Repository argument required
Run Code Online (Sandbox Code Playgroud)
和:
$ svnadmin create .
svnadmin: E200011: Repository creation failed
svnadmin: E200011: Could not create top-level directory
svnadmin: E200011: '.' exists and is non-empty
Run Code Online (Sandbox Code Playgroud)
和:
$ svnadmin create `pwd`
svnadmin: E200011: Repository creation failed
svnadmin: E200011: Could not create top-level directory
svnadmin: E200011: '/home/jeffrey/cryptlib-beta' exists and is non-empty
Run Code Online (Sandbox Code Playgroud)
我不想设置一个SVN服务器或跳过其他环节,例如从我自己检查(或对那些只关心变化/差异的普通用户没有意义的其他步骤).
是否可以原位创建一个受svn版本控制的项目?如果是这样,有人会知道这些命令吗?
提前致谢.
repository ×10
nhibernate ×3
.net ×2
c# ×2
svn ×2
doctrine ×1
entity ×1
gem ×1
git ×1
git-checkout ×1
linq ×1
linq-to-sql ×1
oauth ×1
open-source ×1
ruby ×1
symfony1 ×1
tfs ×1
trac ×1
unit-of-work ×1