我有这个代码来查找树的根节点:
Guid? currentNode = null;
var root = db.RecursiveTrees.Where(x => x.ParentId == currentNode).ToList();
Run Code Online (Sandbox Code Playgroud)
此查询返回0结果.
如果我运行此查询,我会返回预期的行:
var root = db.RecursiveTrees.Where(x => x.ParentId == null).ToList();
Run Code Online (Sandbox Code Playgroud)
为什么第一个查询不起作用(使用最新版本的实体框架)?
编辑:
解决方法:
List<RecursiveTree> root;
if (nodeid == null)
root = db.RecursiveTrees.Where(x => x.ParentId == null).ToList();
else
root = db.RecursiveTrees.Where(x => x.ParentId == new Guid(nodeid)).ToList();
Run Code Online (Sandbox Code Playgroud) 说我有以下树:
CREATE TABLE Tree(Id int, ParentId int, Name varchar(20), Level int)
INSERT INTO Tree(Id, ParentId, Name, Level)
SELECT 1, NULL, 'Bob', 0 UNION ALL
SELECT 2, 1, 'John', 1 UNION ALL
SELECT 3, 1, 'Bill', 1 UNION ALL
SELECT 4, 3, 'Peter', 2 UNION ALL
SELECT 5, 4, 'Sarah', 3
Run Code Online (Sandbox Code Playgroud)
我需要一个脚本来查找特定级别的给定节点的祖先:
例如,第2级Sarah的祖先是Peter,而0级的Peter的祖先是Bob.
使用分层CTE有一种简单的方法吗?sqlfiddle
我想到了"bill" + "john" + null == billjohn,但在我的这个例子中,它似乎正在评估为null:
var clients = from client in taxPortalService.Client()
select new ClientViewModel
{
ResidentialAddressLine1 = client.RESADDRESSLINE1,
ResidentialAddressLine2 = client.RESADDRESSLINE2,
ResidentialAddressLine3 = client.RESADDRESSLINE3,
ResidentialAddressLine4 = client.RESADDRESSLINE4,
ResidentialPostalCode = client.RESPOSTCODE,
ResidentialCountry = client.RESCOUNTRY,
IAResidentialAddress = client.RESADDRESSLINE1 + ", " + client.RESADDRESSLINE2 + ", " + client.RESADDRESSLINE3 + ", " + client.RESADDRESSLINE4 + ", " + client.RESPOSTCODE + ", " + client.RESCOUNTRY
};
Run Code Online (Sandbox Code Playgroud)
我错过了一些明显的东西吗?

MVCMailer使用web.config文件中的smtp设置,如下所示:
<system.net>
<mailSettings>
<smtp from="some-email@gmail.com">
<network enableSsl="true" host="smtp.gmail.com" port="587" userName="some-email@gmail.com" password="valid-password" />
</smtp>
</mailSettings>
</system.net>
Run Code Online (Sandbox Code Playgroud)
控制器:
public virtual MvcMailMessage Welcome()
{
//ViewBag.Data = someObject;
return Populate(x => {
x.ViewName = "Welcome";
x.To.Add("some-email@example.com");
x.Subject = "Welcome";
});
}
Run Code Online (Sandbox Code Playgroud)
无论如何在代码中设置SMTP设置?我想避免在web.config文件中保存密码.
我有以下型号:
public class PagedClientViewModel
{
public int? Page { get; set; }
public PagedList.PagedList<ClientViewModel> Clients { get; set; }
public bool ShowAllClients { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
ShowAllClients是一个复选框,我将用它来进一步过滤从服务器返回的客户端列表.
@Html.CheckBoxFor(model => model.ShowAllClients, new { id = "ShowAllClientsCheckbox" })
Run Code Online (Sandbox Code Playgroud)
这是我的寻呼机:
@Html.PagedListPager(Model.Clients, page => Url.Action("Index", new { Page = page }), PagedListRenderOptions.DefaultPlusFirstAndLast)
Run Code Online (Sandbox Code Playgroud)
寻呼机和复选框都在同一表格上.
我遇到的问题是,当我在寻呼机控件上更改页面时,复选框始终设置为false.发生这种情况是因为在Index操作中,ShowAllClients设置为false.
更改页面时如何保留复选框数据?
你如何使用MVCMailer将图像嵌入到电子邮件中?
我尝试了一些方法
<img src="@Url.Abs("\\..\\images\logo.png")" \>
Run Code Online (Sandbox Code Playgroud)
没有成功.
任何例子?
谢谢
在我的TFS服务器上,如何查看我的团队项目集合的源代码(哪个文件夹)的存储位置?
我在管理控制台中找不到任何指定位置的内容.
源是否存储在文件系统中?
编辑:愚蠢的问题 - 在TFS和VSS之间感到困惑.TFS将源和变更集存储在SQL数据库中,而VSS将源存储在文件系统上.
在浏览一些遗留模拟逻辑时,我遇到以下异常:
无法在DLL"advapi32.dll"中找到名为"LogonUser"的入口点
我知道错误意味着我的应用程序无法在advapi32.dll中找到LogonUser方法.
代码看起来像这样:
[DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true, ExactSpelling = true)]
private static extern bool LogonUser(String lpszUsername, String lpszDomain, String lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken);
if(LogonUser(_username, _domainname, _password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref _tokenHandle))
{
//do stuff...
}
Run Code Online (Sandbox Code Playgroud)
有没有人有类似的错误 - 有关如何解决它或为什么会发生的任何建议?除了使用advapi32.dll(它的.net 3.5解决方案,但有很多遗留类)之外,还有更好的方法吗?
我在映射表中有以下数据:
ID1 LOCALID ID2
Local_-1 BankA_7-9 Local_2647
Local_0 Bank_7-9 Local_2647
Local_2624 BGROMF NULL
Local_2619 BIS NULL
Run Code Online (Sandbox Code Playgroud)
ID2可以为空.
我的第二张表看起来像:
ID1 ID2
Local_-1 Local_2674
Local_0 Local_2674
Local_2624 Local_2674
Local_2619 Local_2674
Run Code Online (Sandbox Code Playgroud)
如何使用以下条件内连接表?没有if语句可以做到这一点吗?
如果映射表中的ID2为null,则只需加入ID1,否则加入ID1和ID2.
我的起点(显然会排除空值)是:
SELECT * FROM
#Table2 C
INNER JOIN Mapping F
ON C.ID1 = F.ID1 AND
C.ID2 = F.ID2
Run Code Online (Sandbox Code Playgroud) 我有以下PagedListModel:
public class PagedClientViewModel
{
public int? Page { get; set; }
public PagedList.IPagedList<ClientViewModel> Clients { get; set; }
}
public class ClientViewModel
{
public string ClientNumber { get; set; }
public bool UseThisClient{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的观点如下:
@using (Html.BeginForm("Index", "Home", FormMethod.Get, new { id = "Form" }))
{
@foreach (var item in Model.Clients)
{
@Html.DisplayFor(modelItem => item.ClientNumber)
@Html.CheckBoxFor(modelItem => item.UseThisClient)
}
@Html.HiddenFor(model => model.Clients)
}
Run Code Online (Sandbox Code Playgroud)
控制器动作:
public ActionResult Index(PagedClientViewModel model)
{
//...process all clients in the list
} …Run Code Online (Sandbox Code Playgroud) c# ×5
asp.net ×3
asp.net-mvc ×2
linq ×2
mvcmailer ×2
pagedlist ×2
sql ×2
checkbox ×1
smtpclient ×1
sql-server ×1
t-sql ×1
tfs2010 ×1