小编Ali*_*eza的帖子

工作单元+存储库模式:业务交易概念的衰落

结合Unit of Work并且Repository Pattern是现在相当广泛使用的东西.正如Martin Fowler 所说,使用的目的UoW是形成商业交易,同时不知道存储库实际如何工作(持续无知).我已经回顾了很多实现; 并忽略具体细节(具体/抽象类,接口,......),它们或多或少类似于以下内容:

public class RepositoryBase<T>
{
    private UoW _uow;
    public RepositoryBase(UoW uow) // injecting UoW instance via constructor
    {
       _uow = uow;
    }
    public void Add(T entity)
    {
       // Add logic here
    }
    // +other CRUD methods
}

public class UoW
{
    // Holding one repository per domain entity

    public RepositoryBase<Order> OrderRep { get; set; }
    public RepositoryBase<Customer> CustomerRep { get; set; }
    // +other repositories …
Run Code Online (Sandbox Code Playgroud)

c# java architecture unit-of-work repository-pattern

56
推荐指数
3
解决办法
4万
查看次数

使用appcfg.py时出现意外的关键字参数"context"

我尝试通过appcfg.py在Google App Engine上更新项目:

C:\> "C:\Program Files (x86)\Google\google_appengine\appcfg.py" update c:\secondApp
Run Code Online (Sandbox Code Playgroud)

但我立即得到以下错误(顶行被忽略):

File "C:\Python27\lib\urllib2.py", line 1240, in https_open
    context=self._context)
TypeError: do_open() got an unexpected keyword argument 'context'
Run Code Online (Sandbox Code Playgroud)

我决定深入研究文件urllib2.py并找到问题所在.在几分钟的代码审查之后,我得出这样的结论:接受名为参数的重载context不存在.所以,我更改了原始代码段:

def https_open(self, req):
    return self.do_open(httplib.HTTPSConnection, req,
        context=self._context) 
Run Code Online (Sandbox Code Playgroud)

def https_open(self, req):
    return self.do_open(httplib.HTTPSConnection, req)
Run Code Online (Sandbox Code Playgroud)

和瞧!它有效(虽然出现了关于身份验证的另一个问题,但第一个问题得到了解决).但是很奇怪,在正式版本中存在这样的错误,而很可能其他人遇到了同样的问题.令人惊讶的是,我找不到其他人报告的这个问题!

模块有什么问题吗?我是否混合了错误版本的已安装软件包?有帮助吗?

我的Google App Engine SDK版本:1.9.17 x64

我安装的Python版本:2.7.9 x64

我的平台:Windows 8.1 x64

我不熟悉Python:D

解:

正如Migel Tissera所说,问题在于身份验证.但我尝试了他提出的命令并得到了同样的错误.幸运的是,我执行了以下命令并取得了成功!(我添加了--noauth_local_webserver和--no_cookies开关):

appcfg.py --noauth_local_webserver --oauth2 --skip_sdk_update_check --no_cookies update c:\secondApp
Run Code Online (Sandbox Code Playgroud)

python google-app-engine

17
推荐指数
1
解决办法
7041
查看次数

SQL Server数据工具(SSDT):构建,发布,部署和比较+更新之间的区别

任何人都可以澄清SQL Server数据工具(SSDT)2012中的构建,发布,部署和比较+更新之间的区别吗?

visual-studio sql-server-data-tools

10
推荐指数
1
解决办法
4887
查看次数

如何从现有数据库生成POCO代理

我最近切换到Entity Framework 5.现在,我想从现有数据库生成POCO类,我还需要延迟加载和更改跟踪.因此,所有标量属性都应该是虚拟的以及导航属性.

添加新的ADO.Net实体数据模型以.edmx文件和其他一些.cs和.tt文件结尾.

首先,我想知道为什么生成的POCO类默认不符合变更跟踪代理的要求,即标量属性不是虚拟的.

其次,如何生成支持代理的poco类?

PS:我接受了Slauma的答案是迄今为止最好和唯一的答案,但我不同意它的第一部分.这是我的论点

Slauma讨论了代理的两个问题:限制和性能:

  • 关于启用代理的实体的限制:当实体框架在DB First方法中生成类时,类必须遵循以启用更改跟踪代理的规则并不是那么重要,因为它们根本不是限制性的.谁真正关心导航集是IList还是HashSet?只有当应用程序中存在perior设计类并且要从中生成表时,才能理解这些限制.

  • DB首先不支持复杂属性.所以我们可以将它们从讨论中排除.

  • 关于性能:在所讨论的文章以及我迄今为止研究的其他一些实验中,结果并不是非常有说服力地拒绝代理以支持快照.首先,实验是在大量实体(即10,000)上完成的.应用程序(不在数据库中)中的批处理过程对大量实体起作用并不是不可能的,但是假设有更好的方法,例如存储过程.其次,根据应用程序的类型和需求,我们通常会处理少量的entites,例如当Repository模式被强制使用时; 代理和快照的性能没有区别.有趣的是,在已解决的实验中,重新为属性重新分配相同的值是代理性能显着失败的唯一情况.但谁真的这样做?小心避免反复通知更改跟踪器非常容易.同样,在这种情况下,当处理大量的entites时会出现重大问题.

t4 poco entity-framework-5

7
推荐指数
1
解决办法
1579
查看次数

DataGridView的魔力

我有一个Windows窗体,包含一个文本框和一个datagridview.一旦文本框的文本发生更改,datagridview的数据源就会更新.它通过处理文本框的TextChanged事件并为数据源分配新的List来完成.通常,新数据源包含1000多行,相当大量的数据.此外,查询数据库以获取此列表也很耗时.

让我感到惊讶的是,如果我在文本框中输入的速度足够快,那么datagrid会一次又一次地暂停渲染,并且只会渲染最终结果.它完全忽略了中间结果.这是有道理的,因为在连续的文本更改期间运行的UI线程正忙.但为什么我仍然可以输入文本框?

  1. TextChange
  2. 获取数据
  3. 刷新DataGridView(无需渲染/绘制)
  4. TextChange
  5. 获取数据
  6. 刷新DataGridView(无需渲染/绘制)
  7. ... TextChange
  8. 获取数据
  9. 刷新DataGridView(最终渲染/绘画)
  10. 完成.

这就像文本框在另一个线程上,但绝对不是.有人知道为什么吗?

c# datagridview winforms

6
推荐指数
1
解决办法
274
查看次数

Visual Studio:如何通过依赖关系安排解决方案资源管理器中的项目

有没有办法根据依赖项(更高级别的依赖项目)手动安排VS 2010+解决方案资源管理器中的项目?

visual-studio solution-explorer

6
推荐指数
2
解决办法
8031
查看次数

类型安全地将类名传递给方法

我需要一个方法中的类名称,例如X.同时,我不想放弃类型安全,我不会允许其他开发人员将字符串(类名)传递给该方法.

像这样的东西:

void X( ??? class) // --> don't know how
{
 var className = get the name of class // --> which I don't know how
 Console.WriteLine(className);
}

X(tblEmployee); //--> usage of X, where tblEmployee is a POCO class
Run Code Online (Sandbox Code Playgroud)

c# class type-safety

5
推荐指数
2
解决办法
2682
查看次数

实体框架数据库首先:时间戳列不起作用

使用db first方法,我希望我的应用程序在我尝试更新(过时的)实体时抛出并发异常,该实体已经由另一个应用程序/用户/会话更新了数据库中的相应行.

我在.Net 4.5上使用Entity Framework 5.相应的表具有Timestamp列以维护行版本.

concurrency timestamp entity-framework-5

5
推荐指数
2
解决办法
8520
查看次数

DbContext如何初始化自动DbSet <T>属性?

考虑以下课程:

class MyContext : DbContext
{
    public DbSet<Order> Orders { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

并实例化一个新对象:

var mycontext = new MyContext();
Run Code Online (Sandbox Code Playgroud)

为什么mycontext.Orders不为null?什么时候初始化?谁初始化了它?我真的很困惑,因为基类(DbConetxt)无法访问派生类属性,因此不可能在基础对象中初始化自动属性.

dbcontext entity-framework-5 dbset

3
推荐指数
1
解决办法
1424
查看次数

将Lambda表达式声明为类常量字段

为什么不能声明类型为的类常量Lambda Expression。我想要这样的东西:

class MyClass
{
   public const Expression<Func<string,bool>> MyExpr = (string s) => s=="Hello!";
}
Run Code Online (Sandbox Code Playgroud)

但是我得到了编译错误: Expression cannot contain anonymous methods or lambda expressions

c# lambda expression field class

3
推荐指数
1
解决办法
2173
查看次数

通过引用传递此(参考此)

请考虑以下代码段(在Windows窗体应用程序中编写):

public partial class Form1
{
    ....
    public void Caller()
    {
        Form1 myRef = this;
        Change(ref this)    //--> won't compile because *this* is read-only
        Change(ref myRef);  //--> compiles but doesn't work.
    }
    ....

    public void Change(ref Form1 theRef)
    {
        theRef = new Form1();
        theRef.Text = "I am a new form";
    }
}
Run Code Online (Sandbox Code Playgroud)

this不允许通过引用传递.那是好的和明智的.但为什么this如上所示间接传递不起作用?据我所知,如果参数通过引用传递,则被调用方法中的任何赋值都会反映到调用方法中.为什么不在这里工作?

更新以使问题清楚

1-我没有努力完成任何特别的事情.我只是想测试一下ref.

2-为什么我误解的原因ref是,我完全忘Form1 myRef = this实际拷贝底层的地址Form1对象myRef; 所以myRef变量与this它们无关,只是它们都指向同一个对象.

c#

2
推荐指数
1
解决办法
1855
查看次数

Java中的C#等效于class.forName()

可能重复:
在C#中获取没有完整名称空间的类型名称

有没有人知道我们如何以一种简单的方式获取类的名称,就像Java可以通过什么方式一样class.getName()

NB:是的,有一些类似于CreateInstance类类型的混乱解决方法,然后得到对象的名称,但我想要一个简单的方法.

编辑1:

实际上,我需要一个方法中的类名称X.同时,我不想放松类型安全,我不会允许其他开发人员将字符串传递给该方法.像这样的东西:

void X( ??? class) // --> don't know how
{
     var className = get the name of class // --> which I don't know how
     Console.WriteLine(className);
}

X(tblEmployee); //--> usage of X, where tblEmployee is a POCO class
Run Code Online (Sandbox Code Playgroud)

c# class

1
推荐指数
1
解决办法
3847
查看次数

为什么我可以在另一个函数中引用一个不存在的函数?

在这里,我将展示从另一个函数引用一个不存在的函数是可能的,并且 SQL Server 在执行时间之前不会检查它:

USE [SomeDataBase];
SELECT dbo.Booo();
Run Code Online (Sandbox Code Playgroud)

显然,如果您没有函数Booo,则会产生关于Booo无法识别函数的错误。不过这并不意外!

现在,试试这个:

CREATE FUNCTION dbo.Foo()
RETURNS INT
AS
BEGIN
    DECLARE @Temp INT
    SET @Temp = (SELECT dbo.Booo())
    RETURN 1
END
Run Code Online (Sandbox Code Playgroud)

令人惊讶的是,该脚本创建了该函数,Foo尽管该Booo函数并未退出。

任何的想法?

t-sql sql-server-2008

0
推荐指数
1
解决办法
134
查看次数