我正在尝试设置AutoMapper以从实体转换为DTO.我知道我应该使用.ForMember()后Mapper.CreateMap<Entity, DTO>()设置自定义映射,但是这似乎并没有成为一个有效的方法.
编辑以供澄清:我不是要查找我已阅读的文档的链接,或者是基本语法的解释.我正在使用答案和文档中描述的正确语法,例如:
Mapper.CreateMap<EFAddress, Address>()
.ForMember(dest => dest.Code, opt => opt.MapFrom(src => src.Name));
Run Code Online (Sandbox Code Playgroud)
如果我在CreateMap <>中有一个无效的类型名称,我可以看到"ForMember"作为一个有效的方法,鼠标悬停显示方法签名,正如我通常所期望的那样.但是,只要我给它两个有效类型,ForMember说它无法解析符号,就好像该方法不可用一样.
对于我没有遇到的泛型类,是否存在某种约束?
谢谢
鉴于这个非常简单的模型:
public class MyContext : BaseContext
{
public DbSet<Foo> Foos { get; set; }
public DbSet<Bar> Bars { get; set; }
}
public class Foo
{
public int Id { get; set; }
public int Data { get; set; }
[Required]
public virtual Bar Bar { get; set; }
}
public class Bar
{
public int Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
以下程序失败:
object id;
using (var context = new MyContext())
{
var foo = new Foo { Bar = …Run Code Online (Sandbox Code Playgroud) 我需要我的应用程序每次运行时创建一个日志文件.
我首选的格式是App.log.yyyy-MM-dd_HH-mm-ss.如果那是不可能的,我会选择App.log.yyyy-MM-dd.counter
这是我目前的appender配置:
<appender name="File" type="log4net.Appender.RollingFileAppender">
<file value="App.log"/>
<rollingStyle value="Date"/>
<datePattern value=".yyyy-MM-dd_HH-mm-ss"/>
<staticLogFileName value="false"/>
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
</appender>
Run Code Online (Sandbox Code Playgroud)
但它会根据日期和时间创建随机数量的文件.
如果我有一个数组a:
a[a.length]回报nil.好.a[a.length, x]回报[].好.a[a.length+x, y]回报nil.与2不一致.虽然这种行为被记录在案,这似乎很奇怪.
任何人都可以解释这种设计背后的原因吗?
我已经看到在同一个项目中使用了这两种样式,我想知道它们之间是否有任何语义差异,或者是否会推荐其他样式以及为什么.
我正在验证通过VS2010 SP1获得的HTML5.我的印象是这种简化是可能的:
<script type="text/javascript" src="foo.js">...</script>
Run Code Online (Sandbox Code Playgroud)
至
<script src="foo.js">...</script>
Run Code Online (Sandbox Code Playgroud)
在尝试这个时,我发现:
<head id="Head1" runat="server">
<script src="../Scripts/MicrosoftAjax.js"></script>
</head>
Run Code Online (Sandbox Code Playgroud)
得出这个:
警告1验证(HTML5):元素"脚本"缺少必需的属性"类型".
我错过了什么吗?Visual Studio XHTML5验证是否比HTML5 doc更严格要求?
我想模拟这个查询:
SELECT * FROM FOO WHERE ID IN (1,2,3)
Run Code Online (Sandbox Code Playgroud)
我怎么能在FNH这样做?
var ids = new List<int>{1,2,3};
var results = session.QueryOver<Foo>().Where( x=> ids.Contains(x.id) );
Run Code Online (Sandbox Code Playgroud)
但这不起作用,只是给了我一个"无法识别的方法调用"异常.
有任何想法吗?这必须是一个共同的要求.
自从我上次使用T4以来已经有一段时间了,这可能是一个愚蠢的问题......
是否可以从模板引用任意组件?
例:
我认为以下应该有效
<#@ assembly name="X" #>
Run Code Online (Sandbox Code Playgroud)
但是我在保存时收到以下错误:
编译转换:找不到元数据文件"X"
我究竟做错了什么?
(如果有人感兴趣:我正在尝试根据我从X获得的一些元数据自动生成特定类型的测试)
更新:看起来VS2010已经破坏了我期待的装配分辨率行为.来自http://blogs.msdn.com/b/garethj/archive/2010/04/15/what-s-new-in-t4-in-visual-studio-2010.aspx:
T4的装配集与包含项目的装配集完全分离,以避免在项目针对以前的框架版本时拾取错误的装配.项目程序集不再用于解析模板程序集指令.
除了使用绝对路径之外,还有其他解决方法吗?
我目前正在开发一个中型应用程序,它将访问不同站点上的两个或更多SQL数据库等...
我正在考虑使用类似的东西:http: //mikehadlow.blogspot.com/2008/03/using-irepository-pattern-with-linq-to.html
但是,我想使用流畅的nHibernate代替Linq-to-SQL(当然还有nHibernate.Linq)
这可行吗?
我该如何配置呢?我的映射定义会在哪里等...?
该应用程序最终将具有许多方面 - 来自WebUI,WCF库和Windows应用程序/服务.
另外,例如在"产品"表上,我是否会创建一个"ProductManager"类,它具有以下方法:
GetProduct,GetAllProducts等......
任何指针都非常受欢迎.
假设我有以下ListView:
<ListView ScrollViewer.VerticalScrollBarVisibility="Auto">
<ListView.View>
<GridView>
<GridViewColumn Header="Something"
DisplayMemberBinding="{Binding Path=ShortText}" />
<GridViewColumn Header="Description"
DisplayMemberBinding="{Binding Path=VeryLongTextWithCRs}" />
<GridViewColumn Header="Something Else"
DisplayMemberBinding="{Binding Path=AnotherShortText}" />
</GridView>
</ListView.View>
</ListView>
Run Code Online (Sandbox Code Playgroud)
我希望短文本列始终适合屏幕,而长文本列则使用剩余空间,必要时自动换行.
那可能吗?