小编Ano*_*use的帖子

当表有自己的链接时的SQL查询

嗨说我有一张桌子:

Person:
PersonId
Name
ManagerId
Run Code Online (Sandbox Code Playgroud)

所以ManagerId是一个回复给另一个人的参考.

所以数据库中可能有人:

1
Bob
null

2
Steve
1

3
Tim
2
Run Code Online (Sandbox Code Playgroud)

所以鲍勃是史蒂夫的经理而史蒂夫是蒂姆的经理.

所以我想要做的就是编写一个查询,让Bob管理下的所有人.直接或间接.所以我想要得到史蒂夫和蒂姆.在同一条线上.

如果我写:

select * from Person
where ManagerId = 1 I would get only Steve.
Run Code Online (Sandbox Code Playgroud)

我怎么写它所以我直接或间接地让每个人都在Bob下?

sql t-sql recursion common-table-expression

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

MVC逻辑应该在哪里进入Controller或View Model

我有一个MVC应用程序,我想显示一个包含数据库信息的下拉列表.

下拉列表将显示来自数据库汽车的信息使用表格Make是汽车的品牌.

所以在我看来,我会有类似的东西:

@model VectorCheck.ViewModels.CarsViewModel
...

@Html.DropDownListFor(modelItem => Model.MakeId, Model.Makes)
...
Run Code Online (Sandbox Code Playgroud)

所以我需要让视图模型得到make的列表.

所以我可能有一些逻辑可以说这只说红色的汽车.

var redCars = _unitOfWork.Cars(x => x.Colour == "Red");
Run Code Online (Sandbox Code Playgroud)

所以我的问题是为这个查询提供逻辑的最佳实践.它应该放在viewModel还是控制器中.

我看到它的方式我有两个选项.

选项1:控制器.

public ActionResult Edit(int id)
        {
            var car = _unitOfWork.CarRepository.Get(id);

            var carMakes = _unitOfWork.CarMakeRepository.Where(x => x.Colour == "Red").Select(u => new SelectListItem { Value = u.CarMakeId.ToString(), Text = u.Name });

            return View("Edit", new InsertUpdateCarViewModel(car, carMakes));
        }
Run Code Online (Sandbox Code Playgroud)

视图模型

public Car Car { get; set; }
public IEnumerable<SelectListItem> CarMakes { get; set; }

InsertUpdateCarViewModel(Car car, IEnumerable<SelectListItem> carMakes)
{
   Car= car; …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc

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

实体框架用户角色多对多关系

嗨,我正在尝试为用户和角色之间的多对多关系设置我的实体框架.

下图显示了数据库中的内容:

多对多关系

用户模型是:

public class User : IEntity
    {
        public virtual int UserId { get; set; }
        [Column(TypeName = "varchar")]
        [StringLength(100)]
        public virtual string UserName { get; set; }
        [Column(TypeName = "varchar")]
        [StringLength(100)]
        public virtual string FirstName { get; set; }
        [Column(TypeName = "varchar")]
        [StringLength(100)]
        public virtual string LastName { get; set; }
        [Column(TypeName = "varchar")]
        [StringLength(200)]
        public virtual string EmailAddress { get; set; }
        public int AreaId { get; set; }
        [Column(TypeName = "varchar")]
        [StringLength(64)]
        public string CreatedByUserName { …
Run Code Online (Sandbox Code Playgroud)

entity-framework

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

DI ninject为控制器工作但不是视图模型

嗨,我正在使用ninject与MVC应用程序.

我确信我已正确设置,因为我能够让它适用于我的控制器.以下是控制器的示例,它正常工作:

public class GstRateController : Controller
    {
        private readonly IUnitOfWork _unitOfWork;

        public GstRateController(IUnitOfWork unitOfWork)
        {
            _unitOfWork = unitOfWork;
        }
...
Run Code Online (Sandbox Code Playgroud)

然后我认为它在viewModel上也会很好所以我尝试了:

public class SettingController : Controller
    {
        private readonly IUnitOfWork _unitOfWork;

        public SettingController(IUnitOfWork unitOfWork)
        {
            _unitOfWork = unitOfWork;
        }
Run Code Online (Sandbox Code Playgroud)

然后我通过以下方式在控制器中实例化视图模型:

public ActionResult Index()
        {
            return View("Index", Activator.CreateInstance<SettingViewModel>());
        }
Run Code Online (Sandbox Code Playgroud)

但这给了我错误:

没有为此对象定义的无参数构造函数.

我是DI的新手.有人可以告诉我如何为viewmodels实现这个目标吗?

asp.net-mvc dependency-injection ninject

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

MVC ActionLink如何指定text,actionname,controller和htmlattributes

我一直试图做一个像这样的动作链接:

<li>@Html.ActionLink("Home", "Index", "Invoice", new { id = "homelink" })</li>
Run Code Online (Sandbox Code Playgroud)

所以我拥有的是linkText,一个actionname,一个控制器名称和一个链接的id.

但是没有与之匹配的签名.最近的一个在控制器名称和htmlattributes之间具有路由值.我没有任何路线值,但我需要放在那里.

有人可以告诉我如何最好地解决这个问题吗?

asp.net-mvc actionlink

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

如何使用print.css使选择看起来像普通文本

我有一个显示这个的网页:

在此输入图像描述

这背后的Html是:

<label>Approved For Payment:</label>

    <select id="Invoice_ApprovedForPayment" class="dropdownapprovedforpayment" name="Invoice.ApprovedForPayment" lineid="299" disabled="disabled">
    <option value="null" selected="selected">Please Approve</option>
    <option value="true">Accepted</option>
    <option value="false">On Hold</option>
    </select>
Run Code Online (Sandbox Code Playgroud)

目前,当打印此页面时,请批准即将显示.因为它将其打印为选择下拉列表.这是有道理的,但是我希望我可以以某种方式得到它,以便它打印时看起来像是一个正常的标签,跨度等?我在想这可能是使用print.css吗?任何人都可以告诉我如何实现这一目标吗?

html css printing asp.net-mvc

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

如何单元测试存储库方法

我有这种方法进行单元测试:

public virtual TEntity Get(int id)
        {
            return _db.Set<TEntity>().Find(id);
        }
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我如何进行单元测试吗?

我在想我需要测试的是使用正确的id调用Find?

首先,我试图_db使用Moq 来模拟上下文.设置不是虚拟的,所以不能使用Verify.

有人可以建议另一种测试方法吗?

unit-testing entity-framework moq mocking

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

jQuery根据文本更改表格单元格文本颜色

我有一个表,其中包含包含状态的数据列.两个示例状态将是"已拒绝"和"付费"

我想要做的是将"已拒绝"的文本颜色更改为红色,将"已付费"的颜色更改为绿色.

对于具有此状态的单元格,我添加了td类似的类:

<td class="status">
    @Html.DisplayFor(modelItem => item.Status)
</td>
Run Code Online (Sandbox Code Playgroud)

所以我可以轻松识别它.

我发现我可以使用以下方法将所有状态的颜色更改为Red:

$('.status').css("color", "red");
Run Code Online (Sandbox Code Playgroud)

我也可以通过以下方式获得第一个的价值:

alert($('.status').html());
Run Code Online (Sandbox Code Playgroud)

但是我不确定如何根据文本设置状态颜色.即所有"已接收"设置颜色为红色,所有"付费"设置颜色为绿色.

有人可以告诉我如何实现这个目标吗?

我甚至使用jQuery遵循正确的方法还是有更好的CSS方式?

html css jquery

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

如何从MVC调用需要日期时间的存储过程

我想用输入参数调用这个存储过程:

proc [dbo].[Invoice_GetHomePageInvoices] (

      @FinancialYearStartDate datetime = null
,      @FinancialYearEndDate datetime = null
Run Code Online (Sandbox Code Playgroud)

麻烦的是我通常从我的代码调用存储过程的方式是:

return _db.Database.SqlQuery<HomePageInvoice>(string.Format("EXEC Invoice_GetHomePageInvoices @FinancialYearStartDate = '{0}', @FinancialYearEndDate = '{1}'", financialYear.StartDate.ToString(), financialYear.EndDate.ToString()));
Run Code Online (Sandbox Code Playgroud)

所以这不会起作用,因为我基本上将我的日期时间转换为字符串.

我该怎么办呢?

c# stored-procedures entity-framework

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

如何测试IEnumerable <int>

在测试中我需要测试一个对象:

IEnumerable<int> Ids.
Run Code Online (Sandbox Code Playgroud)

该集合包含数字1,2和3.

我基本上想测试一下ID中有三个ID,而且1,2和3都存在.

问题是IEnumerable没有计数.

我以为我能够去:

Assert.AreEqual(3, Ids.Count);
Run Code Online (Sandbox Code Playgroud)

任何人都知道如何做到这一点以及如何确保1,2和3是那里的实际数字?

.net c# linq collections unit-testing

4
推荐指数
3
解决办法
5502
查看次数