小编Dan*_* T.的帖子

NHibernate可以在没有迭代器的情况下保存集合吗?

简单的问题:NHibernate可以在没有迭代器的情况下保存集合吗?例如:

var list = new List<Item>();
list.Add(1000 items);

session.Save(list);
Run Code Online (Sandbox Code Playgroud)

或者我必须foreach在列表上做什么?

collections nhibernate save

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

在ExtJS中,如何在显示网格时加载商店?

在ExtJS中,如何在显示网格时加载商店?我希望商店只在显示网格时加载(用户点击按钮显示网格,因此预先加载商店是浪费的).我尝试了afterrender侦听器,但它将loadmask呈现在错误的位置,并且afterlayout每次调整网格大小时,侦听器都会重新加载网格.

javascript extjs

7
推荐指数
1
解决办法
3万
查看次数

如何使用存储库模式在事务中保留IQueryable <>?

根据NHProf,不鼓励使用隐式交易:

http://nhprof.com/Learn/Alerts/DoNotUseImplicitTransactions

但是,NHibernate LINQ IQueryable<>在从数据库中读取对象时返回一个,这是懒惰的评估.我在存储库中有这个方法:

public IQueryable<T> GetAll<T>()
{
    using (var transaction = _session.BeginTransaction())
    {
        var data = _session.Linq<T>();
        transaction.Commit();
        return data;
    }
}
Run Code Online (Sandbox Code Playgroud)

这里的问题是该方法将在data评估之前提交事务.有没有办法使用存储库模式并保持IQueryable<>显式事务?或者读取操作是否可以使用隐式事务?

c# linq nhibernate transactions iqueryable

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

如何通过ASP.NET路由路由图像?

我想创建一个动态缩略图大小调整器,以便您可以使用以下URL来获取已调整大小的图像:

http://server/images/image.jpg?width=320&height=240
Run Code Online (Sandbox Code Playgroud)

我尝试设置这样的路线:

routes.MapRoute(null,
                "{filename}",
                new { controller = "Image", action = "Resize" });
Run Code Online (Sandbox Code Playgroud)

但是如果该文件存在于URL中,则ASP.NET将绕过路由并仅返回该文件.如何强制ASP.NET路由图像而不是返回磁盘上的内容?

c# asp.net-routing url-routing

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

如何为在同一服务器上运行的不同ColdFusion应用程序实现单点登录?

我有多个CF应用程序在相同的域名下运行在同一台服务器上.其中之一,我们称之为Portal,旨在成为其他应用程序的单点登录,让我们称之为AtlasP-Body.通常,您会在session范围中设置一些变量来处理登录信息:

function Login()
{
    session.auth = structNew();
    session.auth.isLoggedIn = true;
    session.auth.id = GetCurrentUserId();
}
Run Code Online (Sandbox Code Playgroud)

但会话范围仅在一个应用程序中共享,而不是在整个服务器中共享.这意味着登录Portal的任何用户都将保持登录状态,但如果他们尝试导航到AtlasP-Body,他们将不得不再次登录.

在这种情况下,我将如何"共享"会话范围,以便服务器上的所有应用程序都可以访问它?我能想到的唯一方法是使用客户端变量并设置数据存储,以便在应用程序之间共享.然后代码变成:

function Login()
{
    client.auth = structNew();
    client.auth.isLoggedIn = true;
    client.auth.id = GetCurrentUserId();
}

function Logout()
{
    structDelete(client, "auth");
}
Run Code Online (Sandbox Code Playgroud)

需要注意的是,因为客户端变量在会话结束时没有被清除,所以我们必须在OnSessionEnd处理程序中手动清除它.

这是处理ColdFusion中单点登录的最佳方式吗?如果是这样,使用客户端变量有什么缺点,或者需要注意缺陷吗?

更新:我只是测试客户端变量法,它看起来像只hitcount,timecreated,lastvisit,和urltoken应用程序之间共享,所以我又回到了起点1.

authentication coldfusion session-variables single-sign-on coldfusion-9

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

在ASP.NET中,如何仅为TTF文件添加CORS标头?

我有一个带有iframe的页面,显示了一个外部页面.外部页面配置为从我的服务器下载CSS文件.

在CSS中,我添加了一个@font-face选择器:

@font-face {
    font-family: "Special Font";
    src: url("<%= Request.Url.GetLeftPart(UriPartial.Authority) + "/fonts/specialfont.ttf" %>");
}
Run Code Online (Sandbox Code Playgroud)

这会在Chrome中下载并显示字体,但在Firefox中,它会下载字体,但拒绝使用它.进行一些研究表明,这个问题是一个跨领域的政策问题.这里提到的解决方案之一:

http://enable-cors.org/

是启用CORS头.但是,它提供的解决方案是在整个网站范围内:

<?xml version="1.0" encoding="utf-8"?>
    <configuration>
        <system.webServer>
            <httpProtocol>
                <customHeaders>
                    <add name="Access-Control-Allow-Origin" value="*" />
                </customHeaders>
            </httpProtocol>
        </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

而我只想为.TTF文件启用它.有没有办法通过使用HttpHandler或其他方法来做到这一点?

c# asp.net font-face cors

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

如何保存NHibernate会话中已存在的瞬态对象?

我有一个Store包含以下列表的列表Products:

var store = new Store();
store.Products.Add(new Product{ Id = 1, Name = "Apples" };
store.Products.Add(new Product{ Id = 2, Name = "Oranges" };

Database.Save(store);
Run Code Online (Sandbox Code Playgroud)

现在,我想编辑其中一个Products,但是有一个瞬态实体.例如,这将是来自Web浏览器的数据:

// this is what I get from the web browser, this product should
// edit the one that's already in the database that has the same Id
var product = new Product{ Id = 2, Name = "Mandarin Oranges" };

store.Products.Add(product);
Database.Save(store);
Run Code Online (Sandbox Code Playgroud)

但是,尝试这样做会给我一个错误:

具有相同标识符值的不同对象已与会话关联

原因是因为store.Products集合已包含具有相同Id的实体.我该如何解决这个问题?

c# nhibernate persistence castle-activerecord session-state

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

有没有办法禁用AutoMapper的异常包装?

我有一个存储库,EntityNotFoundException当它的GetSingle<T>(int id)方法无法在数据库中找到所请求的实体时会抛出一个存储库.当我在AutoMapper中使用它并发生异常时,我会得到类似的东西:

AutoMapperMappingException:尝试将CategoryDTO映射到Category ... --->

AutoMapperMappingException:尝试将System.Int32映射到CategoryType ... --->

AutoMapper.MappingException:尝试将System.Int32映射到CategoryType ... --->

EntityNotFoundException:在数据库中找不到ID为5的TypeType类型的实体

我的自定义异常是4级.这使得很难使用try-catch块,因为现在我必须做这样的事情:

try
{
    // do the mapping
}
catch (AutoMapperMappingException e)
{
    // get the inner-most exception
    while (e.InnerException != null)
    {
        e = e.InnerException;
    }

    // check to see if it's an EntityNotFoundException
    if (e.GetType() == typeof (EntityNotFoundException))
    {
        var notFound = e as EntityNotFoundException;
        // do something specific here, like inform the user
    }
    else
    {
        // do something more generic
    } …
Run Code Online (Sandbox Code Playgroud)

c# exception-handling exception wrapper automapper

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

如何比较 POCO 之间的字段/属性?

可能的重复:
比较 c# 中的对象属性

假设我有一个 POCO:

public class Person
{
    public string Name { get; set; }
    public DateTime DateOfBirth { get; set; }
    public IList<Person> Relatives { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我想比较两个 Person 实例,看看它们是否相等。当然,我会比较NameDateOfBirthRelatives集合,看看它们是否相等。但是,这将涉及我覆盖Equals()每个 POCO 并手动编写每个字段的比较。

我的问题是,我怎样才能编写一个通用版本,这样我就不必为每个 POCO 都这样做?

c# generics comparison properties poco

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

抽象属性是否会创建私有支持字段?

简单问题:抽象属性是否创建了私有支持字段?例:

public abstract Name { get; set; }
Run Code Online (Sandbox Code Playgroud)

这会创建一个私人支持领域吗?我想强制任何派生此属性的类使用自己的支持字段,而不是编译器创建的支持字段.

c# properties abstract

5
推荐指数
2
解决办法
1310
查看次数