使用实体框架4.1代码优先于模型/数据库优先使用EDMX图表有什么优缺点?
我正在尝试完全理解使用EF 4.1构建数据访问层的所有方法.我正在使用Repository模式和IoC.
我知道我可以使用代码优先方法:手动定义我的实体和上下文并用于ModelBuilder微调模式.
我还可以创建一个EDMX图表并选择一个代码生成步骤,该步骤使用T4模板生成相同的POCO类.
在这两种情况下,我最终POCO都得到了ORM不可知的对象和源自的上下文DbContext.
数据库优先似乎最吸引人,因为我可以在企业管理器中设计数据库,快速同步模型并使用设计器对其进行微调.
那么这两种方法有什么区别?是仅仅关于VS2010与企业管理器的偏好?
entity-framework poco ef-code-first entity-framework-4.1 ef-database-first
我正在学习传统的关系数据库(使用PostgreSQL)并进行一些研究我遇到了一些新类型的数据库.CouchDB,Drizzle和Scalaris仅举几例,下一个要处理的数据库技术是什么?
今天的模式应该被视为Java和C++中的缺陷或缺失功能吗?
访客,抽象工厂,装饰器和外墙是当今Java和C++的设计模式.
明天的语言会是什么样子?他们会有什么样的模式?
我正在使用System.Data.Objects.EntityFunctions.TruncateTime方法在我的查询中获取日期时间的日期部分:
if (searchOptions.Date.HasValue)
query = query.Where(c =>
EntityFunctions.TruncateTime(c.Date) == searchOptions.Date);
Run Code Online (Sandbox Code Playgroud)
这个方法(我相信同样适用于其他EntityFunctions方法)不能在LINQ to Entities之外执行.在单元测试中执行此代码(实际上是对象的LINQ)会导致NotSupportedException抛出:
System.NotSupportedException:此函数只能从LINQ to Entities调用.
我DbSets在我的测试中使用存根来存储虚假存储库.
那我应该如何对我的查询进行单元测试?
我正在使用此查询来获取时间.
SELECT DATEDIFF(dd, ActualStartDate, ActualCompletionDate) AS TimeTaken
FROM TableName
Run Code Online (Sandbox Code Playgroud)
现在我想排除周末,只计算周一至周五.
我正在研究内存模型,并且正在努力了解一个进程中存在多少堆.
因此,如果我们有一个包含5个线程的进程,我是否正确地说我们有5个堆栈和1个堆?
如果是这样,线程可以访问彼此的堆栈(或者这正是为什么它们有单独的堆栈,以防止损坏),如果只有1个堆,那么显然它们都访问这个堆,因此需要锁定多个线程?我理解正确吗?
我发现了大量关于如何使用Ninject在ASP.NET MVC3中对ActionFilter进行属性注入的不确定文章和问题.
有人能给我一个明确的例子吗?
这是我的自定义身份验证属性.
public class CustomAuthorizeAttribute : AuthorizeAttribute
{
[Inject]
public IService Service { get; set; }
[Inject]
public IAuthenticationHelper AuthenticationHelper { get; set; }
public override void OnAuthorization(AuthorizationContext filterContext)
{
//My custom code
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用WebActivator来设置Ninject
[assembly: WebActivator.PreApplicationStartMethod(typeof(MyProject.Web.AppStart_NinjectMvc3), "Start")]
namespace MyProject.Web {
public static class AppStart_NinjectMvc3 {
public static void RegisterServices(IKernel kernel) {
//Binding things
}
public static void Start() {
// Create Ninject DI Kernel
IKernel kernel = new StandardKernel();
// Register services with our Ninject DI …Run Code Online (Sandbox Code Playgroud) 我不明白为什么这不起作用
decimal? compRetAmount = !string.IsNullOrEmpty(txtLineCompRetAmt.Text)
? decimal.Parse(txtLineCompRetAmt.Text.Replace(",",""))
: null;
Run Code Online (Sandbox Code Playgroud) 当我第一次看到XML时,我认为它基本上是树的表示.然后我想:重要的不是它是树木的特别好的代表,而是每个人都同意的.就像ASCII一样.一旦建立,由于网络效应,很难取代.取代它的新方案必须要好得多(可能好10倍).当然,为了国际化,ASCII(大部分)已被(大部分)取代为Unicode.
根据谷歌的趋势,XML有x43领先,但正在下降 - 而JSON增长.
[ 编辑 ]请问JSON会将XML替换为数据格式吗?
注意: S表达式(来自lisp)是树的另一种表示,但尚未获得主流采用.还有许多其他提议,例如YAML和Protocol Buffers(用于二进制格式).
我可以看到JSON主宰着与客户端AJAX(AJAJ?)进行通信的空间,这可能会传递回传播到其他系统.
基于SGML的XML比作为文档格式的 JSON更好.我对XML作为数据格式感兴趣.
XML具有JSON缺乏的已建立的生态系统,尤其是定义格式(XML Schema)和转换它们(XSLT)的方法.XML还有许多其他标准,特别是Web服务 - 但它们的重量和复杂性可以说是与XML相悖,并且让人们想要一个新的开始(类似于"Web服务"开始作为CORBA的新起点).
[2010年3月编辑 ]与NoSQL一样,JSON是无模式的.
我在dapper试图拆分包含的列时出现MultiMaps问题NULL.Dapper似乎没有实例化对象,我的映射函数接收null而不是对象.
这是我的新测试:
class Product
{
public int Id { get; set; }
public string Name { get; set; }
public Category Category { get; set; }
}
class Category
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
public void TestMultiMapWithSplitWithNullValue()
{
var sql = @"select 1 as id, 'abc' as name, NULL as description, 'def' as name";
var product = connection.Query<Product, …Run Code Online (Sandbox Code Playgroud)