我目前正在使用Entity Framework Core处理ASP .NET Core 1.0.我对数据库中的数据进行了一些复杂的计算,我不知道如何在不构建贫血域模型的情况下使用依赖注入构建适当的体系结构(http://www.martinfowler.com/bliki/AnemicDomainModel.html)
(简体)示例:
我有以下实体:
public class Project {
public int Id {get;set;}
public string Name {get;set;}
}
public class TimeEntry
{
public int Id {get;set;}
public DateTime Date {get;set;}
public int DurationMinutes {get;set;}
public int ProjectId {get;set;}
public Project Project {get;set;}
}
public class Employee {
public int Id {get;set;}
public string Name {get;set;}
public List<TimeEntry> TimeEntries {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
我想做一些复杂的计算来计算每月的TimeSheet.因为我无法访问Employee实体中的数据库,所以我在a中计算TimeSheet EmployeeService.
public class EmployeeService {
private DbContext _db;
public …Run Code Online (Sandbox Code Playgroud) c# architecture domain-driven-design entity-framework-core asp.net-core
我只是尝试将我的ASP .NET MVC应用程序的一部分异步,但即使在阅读并尝试了很多之后我也不太了解async-await模式并希望有人能给我一个提示.
基本上我有以下几点:
一个javascript调用我的控制器获取图表的部分视图(这在很多图表的页面加载后发生了几次)
// Load content of one chart
my.loadChartContent = function (data, callback) {
$.post("/Dashboard/GetChartContent/", data, function (datain) {
if (isFunction(callback))
callback(datain);
});
};
Run Code Online (Sandbox Code Playgroud)控制器操作,在另一个类中调用数据库方法
public ActionResult GetChartContent(int id, bool isDraft = false)
{
//do something
//...
var chartdata = _dataService.GetDataForChart(chart, isDraft, _user.Id); //long running query
//do something with chartdata
return View(chartdata);
}
Run Code Online (Sandbox Code Playgroud)数据类(_dataService),它使用SqlDataReader从数据库中获取数据,并使用该数据加载DataTable.
问题是虽然javascript是异步执行的,但是在DataService类返回结果之前,Controller-Actions似乎被阻塞了.我想启动对数据库的所有查询并异步等待结果,以便长时间运行的查询不会阻止较短的查询.(在SQL Server Profiler中,我将查询视为Begin-End,Begin-End,Begin-End =>但它应该是begin-begin-begin - end-end-end)
我应该在哪里使用async-await?是否足以将它(某种程度上)用于我的控制器动作,还是必须使整个"调用链"异步?
更新: 当我使用SQLConnection.OpenAsync和ExecuteReaderAsync时,代码永远不会完成......我不明白为什么?
public async Task<Query> GetSqlServerData(Query query)
{
var dt = new DataTable();
var con = …Run Code Online (Sandbox Code Playgroud) 我的编辑表单中有很多Bootstrap输入,并且我正在使用asp-for标签帮助程序进行模型绑定。
<div class="form-group">
<div class="fg-line">
<label asp-for="@Model.Name" class="control-label"></label>
<input asp-for="@Model.Name" class="form-control"/>
</div>
<span asp-validation-for="@Model.Name" class="help-block"></span>
</div>
Run Code Online (Sandbox Code Playgroud)
我想编写一个自定义标签助手,这样我可以编写:
<bsinput asp-for="@Model.Name" />
Run Code Online (Sandbox Code Playgroud)
...产生上面的输出。
是否可以评估嵌套标签助手?
我想预先选择(从我的控制器)列表中的多个选项.我几乎尝试了所有东西,但我无法选择所选项目.
这有什么问题?
@Html.DropDownListFor(x=>x.UserIds, Model.Users, new { @class = "form-control input-sm chosen", multiple = "multiple"})
Run Code Online (Sandbox Code Playgroud)
我也试过@ Html.DropdownList() - 没有成功.
在我的模型中,一切似乎都很好.选择列表具有选定的项目,并且项目的selected属性为true,但我只获得未选择的选项.

作为管理角色的成员,想要在我的 ASP .NET Core Web 应用程序中模拟另一个用户。
基本上我想这样做:
我知道我可以使用其他用户身份登录:
await _signInManager.SignInAsync(appuser, false);
Run Code Online (Sandbox Code Playgroud)
对于“返回我自己的帐户”按钮- 我如何知道我当前正在冒充另一个用户并提供返回我自己帐户的“路径”。
是否有针对这种情况的内置方法?
屏幕截图取自ASP.NET Zero
asp.net ×3
asp.net-mvc ×3
c# ×3
asp.net-core ×2
razor ×2
architecture ×1
async-await ×1
asynchronous ×1