小编Asi*_*xea的帖子

LINQ复杂查询导航属性

我在使用LINQ从数据库中获取数据时遇到问题

我有两个表TeamTeamMember,它们通过相关的1-N的关系.我正在使用实体框架,每个表都有一个实体,每个列都有一个属性.同样在Team实体中TeamMember,由于此关系,存在导航属性.

我想进行查询,我可以将他的所有团队与团队成员联系起来.

result = (from t in this.context.Teams
          orderby t.Name
          select t)
         .Include("TeamMembers")
Run Code Online (Sandbox Code Playgroud)

这很好.我得到了一个Team Entities集合,其中的Team.TeamMember属性填充了每个团队成员的数据.

问题是当我想要执行更复杂的查询时,例如过滤TeamMembers的查询.

例如,两个表都有一列EndDateTime.如果我想让所有未结束的团队和团队成员(他们的结束日期时间不为空)我不知道该怎么做.

通过此查询,我将仅过滤团队,但不过滤团队成员.

result = (from t in this.context.Teams
          where t.EndDateTime == null
          orderby t.Name
          select t)
         .Include("TeamMembers")
         .ToList();
Run Code Online (Sandbox Code Playgroud)

任何的想法?

我有点"解决"它在查询后对成员进行过滤,到集合.像这样:

//Filter out the End dated care coordiantors
var careCoordinatorsToDelete = new List<CareCoordinator>();
foreach (var team in result)
{
    careCoordinatorsToDelete.Clear();

    foreach (var careCoordinator in team.CareCoordinators)
    {
        if (careCoordinator.EndDateTime != null)
            careCoordinatorsToDelete.Add(careCoordinator);
    } …
Run Code Online (Sandbox Code Playgroud)

c# linq entity-framework

9
推荐指数
1
解决办法
5205
查看次数

wpf行为单元测试

我正在使用附加的行为向我的代码添加拖放功能.到目前为止,一切工作正常,但我的问题是当我想测试我的行为类.

例如,其中一个行为类将类似于以下内容:

public class DroppableContainerBehavior: Behavior<FrameworkElement>
{

        protected override void OnAttached()
        {
            base.OnAttached();

            AssociatedObject.AllowDrop = true;
            AssociatedObject.Drop += new DragEventHandler(AssociatedObject_Drop);
            AssociatedObject.DragOver += new DragEventHandler(AssociatedObject_DragOver);
            AssociatedObject.DragLeave += new DragEventHandler(AssociatedObject_DragLeave);

        }


        private void AssociatedObject_Drop(object sender, DragEventArgs e)
        {   
    ...
    }         
}
Run Code Online (Sandbox Code Playgroud)

我现在的问题是当我想为AssociatedObject_Drop方法创建一个单元测试时,我需要创建一个DragEventArgs对象,但这个类是密封的.

我的印象是我做错了什么..我的问题是,我应该测试我的行为类吗?行为与UI有关,通常不值得测试UI.我对吗?也许我必须改变我的行为代码,使其更可测试?有任何想法吗?

谢谢你的帮助!

testing wpf unit-testing behavior

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

是否将我的DTO暴露给被认为不正确的视图?

在过去几周或几个月里,这个问题一直在我的脑海里,我真的不知道什么是最好的解决方案.

使用MVVM模式,我们使用View Models将数据公开给View.例如,如果我想向用户显示产品的详细信息,我将在视图模型中创建某些属性并填充它们.然后通过绑定,视图将能够从这些属性中获取数据.像这样的东西:

 <StackPanel>
    <TextBlock Text="Prodcut Name:" FontWeight="Bold" />
    <TextBlock Text="{Binding Path=ProductName}" />

    <TextBlock Text="Price:" FontWeight="Bold"/>
    <TextBlock Text="{Binding Path=Price}"/>

    <TextBlock Text="Added Date:"  FontWeight="Bold" />
    <TextBlock Text="{Binding Path=Date}"/>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

在视图模型中,我将检索要显示的数据.我将获得像Product DTO这样的数据,它将在视图中具有所需的属性.

 this.productDTO = getData();
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,我们可以将directy从视图模型绑定到dto吗?查看型号:

    private ProductDTO product;

    public string ProductName
    {
        get { return this.product.Name; }
        set { this.product.Name = value; }
    }

    public string Price
    {
        get { return this.product.Price; }
        set { this.product.Price = value; }
    }
Run Code Online (Sandbox Code Playgroud)

我认为暴露DTO并不是一件好事......但是如果它能够让我不必将所有属性从DTO映射到视图模型.

c# silverlight wpf mvvm

4
推荐指数
2
解决办法
698
查看次数

在Visual Studio 2012中调试存储过程

有没有人使用Visual Studio 2012来调试存储过程?

我想这样做.我打开了视图Server Explorer并创建了与数据库的新连接并选择了我的数据库.

现在,如果我去我想要调试的存储过程并右键单击我看不到选项Step into存储过程!它应该在那里!

但是我可以在存储过程中放置​​断点.但是,如果我运行使用该过程的代码,断点将不会被击中!

任何的想法?

debugging stored-procedures visual-studio-2012

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

依赖倒置原则以及放置接口的位置

我正在asp.net中构建一个简单的MVC应用程序.我想遵循依赖倒置原则,我不知道我是否做得对.

我目前正在研究身份验证系统.我有一个AccountController,里面使用Authenticator服务.Authenticator服务通过构造函数注入注入控制器.

public class AccountController : Controller
{
    private IAuthenticator _authenticator;

    public AccountController(IAuthenticator authenticator)
    {
        _authenticator = authenticator;
    }

    //
    // POST: /Account/Login

    [HttpPost]
    public ActionResult Login(LoginModel model, string redirectToUrl = null)
    {

     ...

    }
Run Code Online (Sandbox Code Playgroud)

文件的结构是这样的:

在此输入图像描述

但我想如果我想要完全颠倒控制器及其依赖关系之间的重要性,我将不得不将身份验证服务的接口移到控制器旁边.像这样的东西:

在此输入图像描述

这样,客户端 - 控制器 - 以及服务的抽象将位于同一名称空间中.因此,服务接口的更改将来自客户端,并将传播到服务实现.而不是以前的方式,服务中发生的变化传播到客户端.依赖项是Inverted - 服务依赖于客户端.

当客户端和服务在不同的程序集中时,我可以看到这样做的好处,但是我不确定如果在同一个程序集中我应该这样做.

如果我这样做是正确的,我是否应该使用第一个文件结构或第二个文件结构,请告诉我.

谢谢,阿西尔

c# asp.net-mvc inversion-of-control solid-principles dependency-inversion

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

Powershell在Windows和unix中正确生成文件路径

我想为powershell脚本中的文件路径生成一个字符串.我希望这在windows和mac中同时工作.

目前,代码被硬编码到类似路径的窗口("\" - > windows,"/" - > unix): $templatep="$CoreRoot\templates\$serviceName"

我将其更改为: $templatep= Join-Path $CoreRoot "templates" $serviceName 并且它在Mac中使用Powershell 6.0.但是它在我的带有Powershell 4的Windows服务器中不起作用.我必须做这样的事情:

$templatep= Join-Path $CoreRoot -ChildPath "templates" | Join-Path -ChildPath $serviceName

知道为什么这只是在我的Mac上工作吗?这是PowerShell 5还是6的新功能?我不喜欢必须管道多个Join-Paths.有一个更好的方法吗?

谢谢!

unix windows powershell

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

使用C#泛型创建具有不同返回类型的映射器方法

我正在尝试创建一个方法将int映射到字符串,将字符串映射到int.我有想法用一种方法来做,但不确定这是否可行.

我到目前为止:

class MappingWithGenerics
    {
        [Test]
        public void IntToString()
        {
            string actual = Map<int, string>(1);
            Assert.AreEqual("1", actual);
        }

        [Test]
        public void StringToInt()
        {
            int actual = Map<string, int>("1");
            Assert.AreEqual(1, actual);
        }

        public TOut Map<Tin, TOut>(Tin element)
        {
            if(element.GetType() == typeof(int))
                return element.ToString();
            return Convert.ToInt32(element);
        }
    }
Run Code Online (Sandbox Code Playgroud)

这会产生编译错误.

无法将类型'int'隐式转换为'TOut'

无法将类型'string'隐式转换为'TOut'

知道如何实现Map方法吗?

c# generics

0
推荐指数
1
解决办法
200
查看次数