这是一个关于Web表单数据类型的初学者模式问题.我读过公开数据库ID - 安全风险?接受的答案让我觉得这是浪费时间,但等等......
我有一个引用业务逻辑库的MVC项目,以及引用它的NHibernate SQL存储库的程序集.如果有什么东西强迫我的手去直接从我的控制器代码库引用这些存储库,我就知道出了什么问题.但是,当这些控制器在URL参数中与数据库记录ID对话时,它只是看起来错了吗?
我无法想象那些ID会变成不可消耗的(通过MVC动作).我认为我不需要两个对应于数据库中同一行的UI实体.我不打算让控制器以任何方式解释ID.代理键会产生零差异.尽管如此,我还是想解决这个问题,因为关于平面设计的假设并不比跳过层次的依赖更好.
如何使用仅引用业务逻辑程序集的Web应用程序以及仅对该会话具有意义的GUID进行会话,而程序集使用数据库ID保留事务?
我在VS2013中使用Resharper 8运行测试,它与外部进程集成并重定向其输出.我不是在寻找有资格作为单元测试的指导,因为我发现测试运行器对于任何测试都比控制台应用程序更好.
这个过程是一个数据库,所以我的SetUp和TearDown方法毫不奇怪地做了彼此的对立面,如果允许并发运行,它们绝对会互相踩踏.
他们没有相互踩踏,因为每当两次测试同时开始时,他们就会锁定.
Resharper的最新版本7没有这个问题.
在Resharper>选项>单元测试中修改单元测试设置没有帮助.
我的路线设置如下:
context.MapRoute(
name: "Area",
url: "Area/{controller}/{action}",
defaults: new
{
controller = "Home",
action = "Dashboard"
}
);
context.MapRoute(
name: "AccountArea",
url: "Area/{accountFriendlyId}/{controller}/{action}",
defaults: new
{
controller = "Home",
action = "Dashboard",
accountFriendlyId = RouteParameter.Optional
}
);
context.MapRoute(
name: "AccountCampaignArea",
url: "Area/{accountFriendlyId}/{campaignFriendlyId}/{controller}/{action}",
defaults: new
{
controller = "Home",
action = "Dashboard",
accountFriendlyId = RouteParameter.Optional,
campaignFriendlyId = RouteParameter.Optional
}
);
Run Code Online (Sandbox Code Playgroud)
而且我强烈希望Area/friendlyAccountName/Home带我去,Dashboard()但这不起作用(404).我认为原因是我们去寻找一个friendlyAccountName控制器.
知道如果我应该选择在我的一个控制器之后命名一个帐户,一切都崩溃了,有没有办法在字符串找不到相应的控制器的情况下进入下一个路径?有没有办法在每次修改控制器列表时使用反射并避免维护约束?
编辑
你知道一种不使用反射或至少包含派生类型搜索的方法吗?当第二个路径参数与控制器名称匹配时,我不喜欢产生两次开销的想法(传递约束然后在构造控制器时再次搜索).我希望有一种方法可以在构建控制器然后备份并进入下一个路径时捕获异常.
这似乎是一个非常简单的问题,但我无法弄清楚单向(单眼)SQL查询将采用以下内容并添加一个字段location number,该字段在第一次运行时将为1,对于第一次运行DAL将为2 BOS运行,并在下一次运行中运行3 DAL。我知道如何标记第一个分区(使用两个ROW_NUMBER())。
+---------+--------+-----------+----------+
| ITEM_ID | LOT_ID | ORGN_CODE | TRANS_ID |
+---------+--------+-----------+----------+
| 61 | 15161 | DAL | 992342 |
| 61 | 15161 | DAL | 992347 |
| 61 | 15161 | DAL | 1043941 |
| 61 | 15161 | BOS | 1061565 |
| 61 | 15161 | BOS | 1064997 |
| 61 | 15161 | BOS | 1064998 |
| 61 | …Run Code Online (Sandbox Code Playgroud) 我读过很多类似的问题,但答案根本不起作用.在sql中运行此函数select * from HelloRow('o')不会返回任何行.Running HelloRow('one')返回名为"one"的行.fillrow方法没有做任何事情(只读取字符串).
[Microsoft.SqlServer.Server.SqlFunction(FillRowMethodName = "HelloFillRow", DataAccess = DataAccessKind.Read, TableDefinition="message nchar(20)")]
public static IEnumerable HelloQuery(SqlString like)
{
ArrayList resultCollection = new ArrayList();
using (SqlConnection connection = new SqlConnection("context connection=true"))
{
connection.Open();
using (SqlCommand select = new SqlCommand(
"select name from test where name like @par"
, connection))
{
select.Parameters.Add("par", SqlDbType.NChar, 10).Value = like + "%";
using (SqlDataReader selectReader = select.ExecuteReader())
{
while (selectReader.Read())
{
SqlString nextName = selectReader.GetString(0);
resultCollection.Add(nextName.ToString());
}
}
}
}
return resultCollection; …Run Code Online (Sandbox Code Playgroud) c# ×4
sql ×2
t-sql ×2
asp.net ×1
asp.net-mvc ×1
database ×1
nunit ×1
resharper ×1
routes ×1
sql-server ×1