我最近开始评估Dapper作为EF的潜在替代品,因为我对生成的SQL不太满意,并希望对它进行更多控制.我有一个关于在我的域模型中映射复杂对象的问题.假设我有一个名为Provider的对象,Provider可以包含几个IEnumerable类型的属性,这些属性只能通过父提供者对象(即聚合根)来访问.我已经看过使用QueryMultiple和Map扩展方法解释过的类似帖子,但是想知道如果我想编写一个方法来重新加载整个对象图,如果Dapper能够一举做到这一点或者如果需要做一顿饭.举一个例子,我可以说我的对象看起来如下所示:
public AggregateRoot
{
public int Id {get;set;}
...//simple properties
public IEnumerable<Foo> Foos
public IEnumerable<Bar> Bars
public IEnumerable<FooBar> FooBars
public SomeOtherEntity Entity
...
}
Run Code Online (Sandbox Code Playgroud)
是否有使用Dapper填充整个对象图的简单方法?
大家晚上好,我对下拉列表值的验证有疑问.我有一个视图绑定到一个名为的视图模型类型ReservationData.
该对象包含CustomerVehicles类型的属性List<VehicleData>. VehicleData有两个int属性VehicleMakeId和VehicleModelId.
在我看来,我试图循环CustomerVehicles收集中的项目数量,并显示每个项目的两个下拉列表,车辆制造下拉列表和使用的车辆模型下拉列表DropDownListFor.
当我尝试提交并验证时,我没有在屏幕上看到任何验证错误.
万一你想知道我也ValidationMessageFor为每个下拉列表添加了一个.我不确定这是否是我的视图模型的结构及其复杂性以及如何命名控件或如何设置id的问题.任何帮助将不胜感激.
以下是循环集合的代码:
@for (var i = 0; i < Model.CustomerVehicles.Count(); i++)
{
var vehicleNumber = i + 1;
<div class="vehicle-selection-wrapper">
<div class="content-container">
<h3>
Vehicle @vehicleNumber</h3>
<img class="vehicle-image" alt="manufacturer image" src="@Url.Content("~/Content/images/default-vehicle.gif")" /><br />
@Html.LabelFor(m => m.CustomerVehicles[i].VehicleMakeId)
@Html.DropDownListFor(m => m.CustomerVehicles[i].VehicleMakeId
, new SelectList(Model.VehicleMakes, "Id", "Name")
, @UIDisplay.Dropdown_DefaultOption, new { @class = "long-field" })<br />
@Html.ValidationMessageFor(m => m.CustomerVehicles[i].VehicleMakeId)<br /> …Run Code Online (Sandbox Code Playgroud) 大家下午好.我想知道是否有MVC框架自动连接控件上的data-val*属性,还是我们需要手动创建属性并将其应用于动态内容?
我有一个视图,最初调用在主视图模型中传递的局部视图.此部分视图绑定到我的主视图模型上的复杂属性.局部视图只包含一组级联下拉列表.在我打电话给页面的初始加载时,@Html.Partial("PartialName", Model)如果我尝试提交而没有选择适当的值,则两个下拉列表的验证工作正常.我还在页面上有另一个按钮,如果单击该按钮,则会在页面上加载另一个局部视图实例.如果我现在尝试提交表单这些控件,虽然它们绑定到相同的模型,虽然我已经设置了正确的.ValidationMessageFor帮助程序,但是没有为它们显示验证,因为下拉列表似乎不是使用data-val*属性生成的.有什么方法可以让它们正确显示吗?我还注意到,也没有生成<span />与之关联的关联标记.ValidationMessageFor.有没有人遇到这个问题,如果是这样,你是如何解决的?
这是我调用的javascript函数在按钮的onClick事件上加载部分:
function AddNewVehicle() {
$.ajax({
type: 'GET',
url: '/ReservationWizard/AddVehicleToReservation',
data: $('#reservation-wizard-form').serialize(),
dataType: 'HTML',
async: true,
success: function (data) {
if (data != null) {
$('#vehicle-selection-container').append(data);
}
}
});
}
Run Code Online (Sandbox Code Playgroud)