我在使用LINQ从数据库中获取数据时遇到问题
我有两个表Team和TeamMember,它们通过相关的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) 我正在使用附加的行为向我的代码添加拖放功能.到目前为止,一切工作正常,但我的问题是当我想测试我的行为类.
例如,其中一个行为类将类似于以下内容:
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.我对吗?也许我必须改变我的行为代码,使其更可测试?有任何想法吗?
谢谢你的帮助!
在过去几周或几个月里,这个问题一直在我的脑海里,我真的不知道什么是最好的解决方案.
使用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映射到视图模型.
有没有人使用Visual Studio 2012来调试存储过程?
我想这样做.我打开了视图Server Explorer并创建了与数据库的新连接并选择了我的数据库.
现在,如果我去我想要调试的存储过程并右键单击我看不到选项Step into存储过程!它应该在那里!
但是我可以在存储过程中放置断点.但是,如果我运行使用该过程的代码,断点将不会被击中!
任何的想法?
我正在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
我想为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.有一个更好的方法吗?
谢谢!
我正在尝试创建一个方法将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# ×4
wpf ×2
asp.net-mvc ×1
behavior ×1
debugging ×1
generics ×1
linq ×1
mvvm ×1
powershell ×1
silverlight ×1
testing ×1
unit-testing ×1
unix ×1
windows ×1