我是EF的新手,并试图通过代码优先方法获得多对多的单向关系.例如,如果我有两个类(不是我的真实模型),它们之间是N*N关系,但没有来自"Customer"方面的导航属性.
public class User {
public int UserId { get; set; }
public string Email { get; set; }
public ICollection TaggedCustomers { get; set; }
}
public class Customer {
public int CustomerId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}Run Code Online (Sandbox Code Playgroud)
映射代码看起来像......
modelBuilder.Entity()
.HasMany(r => r.TaggedCustomers)
.WithMany(c => c.ANavgiationPropertyWhichIDontWant)
.Map(m =>
{
m.MapLeftKey("UserId");
m.MapRightKey("CustomerId");
m.ToTable("BridgeTableForCustomerAndUser");
});Run Code Online (Sandbox Code Playgroud)
这种语法迫使我对"Customer"实体使用"WithMany".以下网址是"按照惯例,Code First总是将单向关系解释为一对多".
是否可以覆盖它,或者我应该使用任何其他方法?
在MVC应用程序中,我想动态渲染表单的某些部分(就像控制器端的PartialView)
在局部视图中,我没有Html.BeginForm(),因为表单标签已经呈现.
@model Introduction.Models.Human
<div>
@Html.EditorFor(model => model.MarriageInformation.SpouseDetails)
<div class="editor-label">
@Html.LabelFor(model => model.MarriageInformation.DOM)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.MarriageInformation.DOM)
@Html.ValidationMessageFor(model => model.MarriageInformation.DOM)
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我面临的问题是在这种情况下,EditorFor不会返回所有data-val-*属性.
<div>
<div class="editor-label">
<label for="MarriageInformation_SpouseDetails_Name">Name</label>
</div>
<div class="editor-field"><input class="text-box single-line" id="MarriageInformation_SpouseDetails_Name" name="MarriageInformation.SpouseDetails.Name" type="text" value="" />
Run Code Online (Sandbox Code Playgroud)
这是设计还是我在这里遗漏了什么?这附近有工作吗?
我想的选项是在ajax加载之后 - 剥离表单并注入内部内容.
遵循两种方法(一种使用IEnumerator<int>和其他用途List<int>.Enumerator)即使外观相同也会产生不同的结果.
static void M1()
{
var list = new List<int>() { 1, 2, 3, 4 };
IEnumerator<int> iterator = list.GetEnumerator();
while (iterator.MoveNext())
{
Console.Write(iterator.Current);
}
iterator.Reset();
while (iterator.MoveNext())
{
Console.Write(iterator.Current);
}
}
static void M2()
{
var list = new List<int>() { 1, 2, 3, 4 };
//Here the iterator will be List<int>.Enumerator (which is a struct)
var iterator = list.GetEnumerator();
while (iterator.MoveNext())
{
Console.Write(iterator.Current);
}
//This will not work, as Reset method was implemented explicitly …Run Code Online (Sandbox Code Playgroud) 我有一个SVG,其宽度和高度设置为100%,属性“ preserveAspectRatio”设置为“ xMidYMid Meet”。
使用谷歌浏览器时,添加标记(将其设为HTML5)后,行为会发生变化。SVG元素不会占据页面上的所有空间,并且SVG的高度会根据宽度自动设置。
没有DOCTYPE的HTML-按预期工作
<html>
<head>
<style>
body{
padding:0;
margin:0;
}
</style>
</head>
<body>
<svg xmlns="http://www.w3.org/2000/svg"
version="1.1"
style="width:100%;height:100%;background-color:#0f0"
preserveAspectRatio="xMidYMid meet"
viewBox="0 0 100 150">
<rect
x="11"
y="11"
width="80"
height="130"
style="stroke: #000000; fill:none;"/>
</svg>
</body>
</html>Run Code Online (Sandbox Code Playgroud)
带有DOCTYPE的HTML-不起作用
<!DOCTYPE HTML>
<html>
<head>
<style>
body{
padding:0;
margin:0;
}
</style>
</head>
<body>
<svg xmlns="http://www.w3.org/2000/svg"
version="1.1"
style="width:100%;height:100%;background-color:#f00"
preserveAspectRatio="xMidYMid meet"
viewBox="0 0 100 150">
<rect
x="11"
y="11"
width="80"
height="130"
style="stroke: #000000; fill:none;"/>
</svg>
</body>
</html>Run Code Online (Sandbox Code Playgroud)
注意::内联结果片段可能不正确,请参阅Plunker