我目前正在学习更多关于Linq-To-Entities的内容 - 特别是关于渴望和懒惰加载的那一刻.
proxy.User.Include("Role").First(u => u.UserId == userId)
Run Code Online (Sandbox Code Playgroud)
这应该加载用户以及用户拥有的任何角色.我有一个问题,但我也有一个问题.这只是为了解L2E而创建的一个简单模型
我的印象是,这是为了让事情变得强烈 - 所以我为什么要写"角色"?看来,如果我更改了表的名称,那么这不会产生编译错误......
我的错误是这样的:
The specified type member 'Roles' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.
Run Code Online (Sandbox Code Playgroud)
下面的解决方案允许我现在编写代码:
proxy.User.Include(u => u.Role).First(u => u.UserId == userId)
Run Code Online (Sandbox Code Playgroud)
哪个好多了!
linq-to-entities entity-framework lazy-loading eager-loading
我不确定这是否已经回答了,我看了几个问题,但我认为它们不是我所追求的.
假设我有3个表:
Restaurant 1.....M MenuCategory 1.....M MenuItem
Run Code Online (Sandbox Code Playgroud)
我有一个L2E查询,看起来像这样:
Restaurant = context.Restaurant
.Include(r => r.MenuCategory)
.FirstOrDefault(r => r.RestaurantId == resaurantId);
Run Code Online (Sandbox Code Playgroud)
这在某种程度上起作用,但它只预加载菜单类别.
作为一种解决方法,我能够遍历每个类别并在它们上面调用.Load(),但这将涉及到理论上我应该需要的更多内容.
我真正希望能做的是:
Restaurant = context.Restaurant
.Include(r => r.MenuCategory)
.Include(r => r.MenuCategory.MenuItems)
.FirstOrDefault(r => r.RestaurantId == resaurantId);
Run Code Online (Sandbox Code Playgroud)
但显然这不可用,因为r.MenuCategory是一个可枚举的
答案1:
context.Restaurant.Include( "MenuCategory.MenuItems");
我把这个问题转移到了另一个问题上,因为我认为从一个完美的答案中拿出一个完全正确的答案是不公平的:
这是我的单元测试(虽然毫无意义,但证明了一点
Config entity = new Config("key", "value");
Session.SaveOrUpdate(entity);
Config config = Session.Query<Config>().SingleOrDefault(c => c.Key == "key");
Assert.IsNotNull(config);
Run Code Online (Sandbox Code Playgroud)
它失败了...但是我不认为应该这样做(请注意,如果我刷新它,它不会失败,但这不是我想要的行为)
如果我用这个替换查询行
Config config = Session.Get<Config>("key");
Run Code Online (Sandbox Code Playgroud)
...通过
它绝对不会刷新(我什至将FlushMode设置为从不只是为了确定)。为什么一个人成功,另一个人不成功?这似乎不正确-我非常希望linq能够成功
我正在尝试将SVN存储库转换为Mercurial,但我遇到了一些麻烦.这些是我采取的步骤:(我在Windows上)
在扩展中打开"转换"
打开命令窗口,然后键入:
hg convert http://myversioncontrorepositoryhere
Run Code Online (Sandbox Code Playgroud)
它说它正在初始化目标文件夹,然后询问:
Enter username for Administration at http://myversioncontrorepositoryhere:
Run Code Online (Sandbox Code Playgroud)
然后键入我的用户名
in Administration at http://myversioncontrorepositoryhere:
Run Code Online (Sandbox Code Playgroud)
我认为这是我的密码,但它只是循环回来
Enter username for Administration at http://myversioncontrorepositoryhere:
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我非常确定我正确输入了我的用户名和密码.
我收到这个错误:
Line 246: <roleManager>
Line 247: <providers>
Line 248: <add name="AspNetSqlRoleProvider" connectionStringName="LocalSqlServer" applicationName="/" type="System.Web.Security.SqlRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
Line 249: <add name="AspNetWindowsTokenRoleProvider" applicationName="/" type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
Line 250: </providers>
Source File: C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config Line: 248
Run Code Online (Sandbox Code Playgroud)
但是,它不应该是因为我们没有使用aspnetrole提供者.但它在machine.config中.其他网站没有这个问题.有什么可以让它拿起aspnetsqlroleprovider?
所有相关代码:
//JSON data
var dataType = 'application/json; charset=utf-8';
var data = {
FirstName: 'Andrew',
LastName: 'Lock',
Age: 31
}
console.log('Submitting form...');
$.ajax({
type: 'POST',
url: '/Diary/Save',
dataType: 'json',
contentType: dataType,
data: data,
success: function (result) {
console.log('Data received: ');
console.log(result);
}
});
[HttpPost]
public IActionResult Save([FromBody] Person person)
{
return Json(person);
}
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
Save方法中的“ person”始终为null。这应该可以工作...感觉好像是设置问题吗?我是否需要在这里进行更改: …
页面上有2个小图片:
<a href="link.htm"><img src="image1.jpg" /></a>
<a href="link2.htm"><img src="image2.jpg" /></a>
Run Code Online (Sandbox Code Playgroud)
当它们出现在页面上时,它们不会像我期望的那样直接出现在彼此旁边,它们之间会出现空格字符.
我有点理解为什么这个空间出现了(在标记中它们之间有空间,但是我不希望空间存在).
我正在运行身份代码生成器
dotnet aspnet-codegenerator identity -dc WebApplication1.Data.ApplicationDbContext --force
Run Code Online (Sandbox Code Playgroud)
但是输出的页面基于引导程序3-我读过的书建议它们应该是引导程序4(例如https://github.com/aspnet/Scaffolding/issues/712#issuecomment-420143440)
要获得基于BS4的身份页面,我还需要做些其他事情吗?
笔记:
我确保该工具是最新的:
dotnet tool update --global dotnet-aspnet-codegenerator
Tool 'dotnet-aspnet-codegenerator' was reinstalled with the latest stable version (version '2.2.0').
Run Code Online (Sandbox Code Playgroud) asp.net ×2
asp.net-core ×2
c# ×2
ajax ×1
hgrc ×1
html ×1
include ×1
jquery ×1
layout ×1
lazy-loading ×1
mercurial ×1
migration ×1
nhibernate ×1
spaces ×1
svn ×1