简单的问题:NHibernate可以在没有迭代器的情况下保存集合吗?例如:
var list = new List<Item>();
list.Add(1000 items);
session.Save(list);
Run Code Online (Sandbox Code Playgroud)
或者我必须foreach在列表上做什么?
在ExtJS中,如何在显示网格时加载商店?我希望商店只在显示网格时加载(用户点击按钮显示网格,因此预先加载商店是浪费的).我尝试了afterrender侦听器,但它将loadmask呈现在错误的位置,并且afterlayout每次调整网格大小时,侦听器都会重新加载网格.
根据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<>显式事务?或者读取操作是否可以使用隐式事务?
我想创建一个动态缩略图大小调整器,以便您可以使用以下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路由图像而不是返回磁盘上的内容?
我有多个CF应用程序在相同的域名下运行在同一台服务器上.其中之一,我们称之为Portal,旨在成为其他应用程序的单点登录,让我们称之为Atlas和P-Body.通常,您会在session范围中设置一些变量来处理登录信息:
function Login()
{
session.auth = structNew();
session.auth.isLoggedIn = true;
session.auth.id = GetCurrentUserId();
}
Run Code Online (Sandbox Code Playgroud)
但会话范围仅在一个应用程序中共享,而不是在整个服务器中共享.这意味着登录Portal的任何用户都将保持登录状态,但如果他们尝试导航到Atlas或P-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
我有一个带有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中,它会下载字体,但拒绝使用它.进行一些研究表明,这个问题是一个跨领域的政策问题.这里提到的解决方案之一:
是启用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或其他方法来做到这一点?
我有一个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的实体.我该如何解决这个问题?
我有一个存储库,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# 中的对象属性
假设我有一个 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 实例,看看它们是否相等。当然,我会比较Name、DateOfBirth和Relatives集合,看看它们是否相等。但是,这将涉及我覆盖Equals()每个 POCO 并手动编写每个字段的比较。
我的问题是,我怎样才能编写一个通用版本,这样我就不必为每个 POCO 都这样做?
简单问题:抽象属性是否创建了私有支持字段?例:
public abstract Name { get; set; }
Run Code Online (Sandbox Code Playgroud)
这会创建一个私人支持领域吗?我想强制任何派生此属性的类使用自己的支持字段,而不是编译器创建的支持字段.
c# ×7
nhibernate ×3
properties ×2
abstract ×1
asp.net ×1
automapper ×1
coldfusion ×1
coldfusion-9 ×1
collections ×1
comparison ×1
cors ×1
exception ×1
extjs ×1
font-face ×1
generics ×1
iqueryable ×1
javascript ×1
linq ×1
persistence ×1
poco ×1
save ×1
transactions ×1
url-routing ×1
wrapper ×1