小编Tyl*_*ght的帖子

ASP.NET MVC 3:附加到部分

我想弄清楚是否有可能附加到某个部分.这是我的结构:

_Layout.cshtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<link href="@Url.Content("~/Content/style.css")" rel="stylesheet" type="text/css" />
@RenderSection("Css", false)
<script type="text/javascript" src="@Url.Content("~/Content/scripts/head.load.min.js")"></script>
</head>
<body class="bg_g">
    @RenderBody()
    <script type="text/javascript">
        @RenderSection("Javascript", false)
    </script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

Logon.cshtml

@{
    Layout = "~/Views/Shared/_DMZ.cshtml";
    ViewBag.Title = "Logon";
}

@section Javascript += {
    // JAVASCRIPT CODE;
}

<div>
    Stuff
    @{ Html.RenderAction("Register", "Account"); }
    @{ Html.RenderAction("Register2", "Account"); }
</div>
Run Code Online (Sandbox Code Playgroud)

Register.cshtml

@{
    Layout = null;
}

@section Javascript += {
    // More javascript code
}

<div>
    Register …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc-3

9
推荐指数
1
解决办法
1216
查看次数

Java OO:这甚至可能吗?

我试图隐藏一个我不拥有的类的实现.我想要这样做我扩展课程并实现我自己的界面.以下是如何创建我需要的类的实例:

QueueInfo info = admin.getQueue(queueName);
Run Code Online (Sandbox Code Playgroud)

QueueInfo是我不拥有的类.要获取此对象的实例,我必须使用管理对象来获取它.我想通过一个名为IQueueInfo的接口来隐藏这个实现.IQueueInfo将只提供对QueueInfo消费者需求的访问.因此,为了获得这个QueueInfo,我想通过我自己的对象EMSQueueInfo来工作.以下是我设想的设置方法:

public class EMSQueueInfo extends QueueInfo implements IQueueInfo {
    //...
}
Run Code Online (Sandbox Code Playgroud)

这允许我的消费者通过接口IQueueInfo工作,它允许底层EMSQueueInfo访问QueueInfo拥有的所有内容.我的问题在于获得QueueInfo的"实时"实例.要获得QueueInfo的常规实例,我可以说:

QueueInfo info = new QueueInfo(queueName);
Run Code Online (Sandbox Code Playgroud)

此实例不是"实时",因为它不是由管理对象创建的.所以,这样做:

public class EMSQueueInfo extends QueueInfo implements IQueueInfo {

    public EMSQueueInfo(String queueName){
        super(queueName);
    }

}
Run Code Online (Sandbox Code Playgroud)

不会给我一个"活"的对象.我希望能做的是这样的事情:

public class EMSQueueInfo extends QueueInfo implements IQueueInfo {

    public EMSQueueInfo(String queueName, Admin admin){
        super = admin.getQueue(queueName);
    }

}
Run Code Online (Sandbox Code Playgroud)

但这是不可能的.

我看到的唯一解决方案是从我的EMSQueueInfo类中删除扩展,只是自己包装对象,通过私有变量访问所有方法:

public class EMSQueueInfo extends QueueInfo implements IQueueInfo {

    private QueueInfo _queueInfo

    public EMSQueueInfo(String queueName, Admin admin){
        _queueInfo = admin.getQueue(queueName);
    }

    public int …
Run Code Online (Sandbox Code Playgroud)

java oop

6
推荐指数
2
解决办法
141
查看次数

Linq平等比较不起作用

鉴于此方法:

internal static IEnumerable<Entity> GetByParentImpl<Entity, TKey>(this ICanGetByParent<Entity, TKey> self, TKey parentId, string fieldName) 
    where Entity : class 
{
    RepositoryBase<Entity> rb = (RepositoryBase<Entity>)self;
    rb.unitOfWork.Begin();

    var entities = rb.unitOfWork.Session.QueryOver<Entity>()
        .Where(e => EqualityComparer<TKey>.Default.Equals(GetId<Entity, TKey>(e, fieldName), parentId))
        .List();

    return entities;
}
Run Code Online (Sandbox Code Playgroud)

这个助手:

private static TKey GetId<Entity, TKey>(object obj, string fieldName) where Entity : class
{
    TKey id = default(TKey);

    switch(id.GetType().Name) {
        case "Int32":
            break;
        case "Guid":
            id = (TKey)TypeDescriptor.GetConverter(typeof(TKey)).ConvertFromInvariantString((string)typeof(Entity).GetField(fieldName).GetValue(obj));
            break;
    }

    return id;
}
Run Code Online (Sandbox Code Playgroud)

我的linq语句中出现了这个异常:

无法识别的方法调用:System.Collections.Generic.EqualityComparer`1 [[System.Guid,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089]]:Boolean Equals(System.Guid,System.Guid) …

c# nhibernate

5
推荐指数
1
解决办法
785
查看次数

流利的NHibernate和NLog

我的流畅配置中出现了一些模糊错误的问题.我已经读过,设置日志记录解决方案将帮助我解决问题.我想使用NLog.我知道我需要使用Common.Logging 2.0和NHibernate.IInterfaceLogger来启动并运行它.我只是不确定如何将各个部分组合在一起.我的系统基于洋葱架构.我为NLog设置了Logging服务,我有自己的界面,但是我对于将所有这些绑定在一起的地方有点困惑.我的Fluent NHibernate配置存在于我的Data项目中.我假设我想把所有这些绑在一起.

对此的任何想法都会很棒!我有点迷路了!

c# nlog fluent-nhibernate onion-architecture

4
推荐指数
1
解决办法
2691
查看次数

流畅的NHibernate生成审计

我需要一些帮助来设置我的Fluent NHibernate POCO类结构.我试图让一个方法使一个对象可审计.在创建时,我希望我的创建和修改日期时间设置和更新,我希望我的修改更新.我一直在关注一些例子,但我遇到了障碍.这是我目前的设置:

IAuditable.cs

namespace ZeroBase.Domain.Entities
{
public interface IAuditable
{
    DateTime Created
    {
        get;
    }

    DateTime Modified
    {
        get;
    }

    string CreatedPropertyName
    {
        get;
    }

    string ModifiedPropertyName
    {
        get;
    }

    void SetCreationDate(DateTime created);
    void SetModifiedDate(DateTime modified);
}
}
Run Code Online (Sandbox Code Playgroud)

AuditableEntity.cs

namespace ZeroBase.Domain.Entities
{
public class AuditableEntity<T> : IAuditable
{
    public DateTime Created { get; private set; }
    public DateTime Modified { get; private set; }

    void IAuditable.SetCreationDate(DateTime created)
    {
        this.Created = created;
    }

    void IAuditable.SetModifiedDate(DateTime modified)
    {
        this.Modified = modified; …
Run Code Online (Sandbox Code Playgroud)

c# nhibernate fluent-nhibernate

2
推荐指数
1
解决办法
1662
查看次数

StructureMap to Ninject转换

我怎么能转换这个:

For<ISession>().Use(ctx => {
    var uow = (INHibernateUnitOfWork)ctx.GetInstance<IUnitOfWork>();
    return uow.Session;
});
Run Code Online (Sandbox Code Playgroud)

对Ninject?

我能够转换这个:

For<ISessionSource>().Singleton().Use<NHibernateSessionSource>();
Run Code Online (Sandbox Code Playgroud)

Bind<ISessionSource>()
    .To<NHibernateSessionSource>()
    .InSingletonScope()
Run Code Online (Sandbox Code Playgroud)

我想我也可以转换这个:

For<IUnitOfWork>().HybridHttpOrThreadLocalScoped().Use<NHibernateUnitOfWork>();
Run Code Online (Sandbox Code Playgroud)

Bind<IUnitOfWork>().To<NHibernateUnitOfWork>().InThreadScope();
Run Code Online (Sandbox Code Playgroud)

我知道这些并非都是一对一的,但我可以得到一些帮助吗?

c# structuremap ninject

2
推荐指数
1
解决办法
321
查看次数

如何在n层架构中解决这个NHibernate查询?

我试图将NHibernate从我的服务层分离出来.我的架构看起来像这样:

web - > services - > repositories - > nhibernate - > db

我希望能够从我的服务层和可能的我的web层产生nhibernate查询,而不知道那些层知道他们正在处理什么样的orm.目前,我在我的所有存储库中都有一个find方法IList<object[]> criteria.这允许我传递一个标准列表,例如new object() {"Username", usernameVariable};从我的架构中的任何地方.NHibernate接受它并创建一个新的Criteria对象并添加传入的标准.这适用于我的服务层的基本搜索,但我希望能够传入我的存储库转换为NHibernate Criteria的查询对象.

真的,我很乐意实现类似于这个问题所描述的内容:抽象nhibernate标准是否有价值.我只是没有找到任何关于如何实现这样的东西的好资源.该问题中描述的方法是一种好方法吗?如果是这样,有人可以提供一些关于如何实施这样的解决方案的指示吗?

c# nhibernate onion-architecture

2
推荐指数
1
解决办法
1180
查看次数

使用Automapper将服务结果映射到视图模型

我正在尝试将服务结果映射到特定的视图模型.我有一个名为Category的实体,其中包含Id和Name.我通过存储库ICategoryRepository公开它.我有一个服务IInfrastructureService使用类别存储库GetAllCategories.GetAllCategories返回一个IList.在我的MVC项目中.我有一个名为NavigationController的控制器.此控制器需要调用GetAllCategories服务.我想将此结果映射到这样的结构:

public class CategoryViewModel {
    public Guid CategoryId { get; set; }
    public string Name { get; set; }
}

public class CategoryMenuViewModel {
    public IList<CategoryViewModel> Categories { get; set; }
    public CategoryViewModel SelectedCategory { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我想用Automapper来做这件事.在我的Application_Start()中,我创建了地图:

Mapper.CreateMap<Category, CategoryViewModel>();
Run Code Online (Sandbox Code Playgroud)

然后在我的控制器中:

public ViewResult CategoryMenu()
{
    CategoryMenuViewModel viewModel = new CategoryMenuViewModel();
    Mapper.CreateMap<Category, CategoryViewModel>();
    viewModel.Categories = Mapper.Map<IList<Category>, IList<CategoryViewModel>>(_infrastructureService.GetAllCategories());
    return View(viewModel);
}
Run Code Online (Sandbox Code Playgroud)

这给了我这个例外:程序集中的重复类型名称.

我不确定我在这里做错了什么.任何帮助或指导都会摇滚!

asp.net-mvc domain-driven-design automapper

1
推荐指数
1
解决办法
1501
查看次数

使用Ninject在MVC 3中注入属性

我正在尝试将一个属性注入我的一个名为UnitOfWorkAttribute的ActionFilter中.我有这个代码:

[Inject]
public IUnitOfWork UnitOfWork { get; set; }
Run Code Online (Sandbox Code Playgroud)

在执行之前,我告诉Ninject解决这个问题:

Bind<IUnitOfWork>().To<NHibernateUnitOfWork>().InThreadScope();
Run Code Online (Sandbox Code Playgroud)

我的问题是,在我的UnitOfWorkAttribute类中,每当我尝试使用我的UnitOfWork属性时,它都会显示为Null.这是我的界面:

public interface IUnitOfWork : IDisposable
{
    void Begin();
    void Commit();
    void Rollback();
}
Run Code Online (Sandbox Code Playgroud)

这是我的具体内容:

public interface INHibernateUnitOfWork : IUnitOfWork
{
    ISession Session { get; }
}

public class NHibernateUnitOfWork : INHibernateUnitOfWork
{
    private readonly ISessionSource sessionSource;
    private ITransaction transaction;
    private ISession session;

    private bool disposed;
    private bool begun;

    public NHibernateUnitOfWork(ISessionSource sessionSource)
    {
        this.sessionSource = sessionSource;
        Begin();
    }

    //.......
}
Run Code Online (Sandbox Code Playgroud)

我正在履行//下的界面......

我在这做错了什么?

c# ninject asp.net-mvc-3

1
推荐指数
1
解决办法
1339
查看次数

我应该在基于DDD的体系结构(洋葱架构)中散列我的密码?

我正在尝试找出在我的架构中使用身份验证密码的最佳位置.这是我的请求流程:

MVC3->MembershipProvider->AccountService->UserRepository->NHibernate->Database
Run Code Online (Sandbox Code Playgroud)

我在服务级别的哈希与存储库级别之间徘徊.我看到两者都有优势,但有谁知道这个标准的地方照顾这个?我将哈希密码存储在数据库中.

passwords domain-driven-design onion-architecture asp.net-mvc-3

1
推荐指数
1
解决办法
1271
查看次数

NHibernate中的工作单元和每个请求的会话

我想我的工作单元可能会在我的架构中设置错误.这是我目前拥有的(缩进显示顺序):

HttpRequest.Begin()
  UnitOfWork.Begin()
    Session.BeginTransaction(System.Data.IsolationLevel.ReadCommitted);
Run Code Online (Sandbox Code Playgroud)

在这里,我使用NHibernate调用各种服务来执行crud.当我想对数据库进行更改(更新/保存)时,我调用此代码:

        using (var transaction = unitOfWork.Session.BeginTransaction())
        {
            try
            {
                // These are just generics
                ret = (Key)unitOfWork.Session.Save(entity);
                transaction.Commit();
                rb.unitOfWork.Session.Clear();
            }
            catch
            {
                transaction.Rollback();
                rb.unitOfWork.Session.Clear();
                rb.unitOfWork.DiscardSession();
                throw;
            }
        }
Run Code Online (Sandbox Code Playgroud)

当HttpRequest结束时,我执行以下步骤:

      UnitOfWork.Commit()
    Transaction.Commit() // This is my sessions transaction from the begin above
Run Code Online (Sandbox Code Playgroud)

我遇到了能够回滚大批量进程的问题.因为我在我的CRUD层中提交我的事务,如上所示,我的事务不再处于活动状态,当我尝试在UnitOfWork中回滚时,由于事务已经提交,它什么都不做.我在我的CRUD层中提交代码的原因是我可以尽可能快地保留我的数据,而不会长时间锁定数据库.

在上述情况下采取的最佳行动方案是什么?我是否只进行了不提交批处理作业的特殊CRUD操作,只是在我的工作结束时处理提交,或者我的逻辑是否与我的UnitOfWork和Session Per Request有关?有什么建议?

c# nhibernate unit-of-work session-per-request

1
推荐指数
1
解决办法
3414
查看次数