小编msj*_*han的帖子

相同的表名称不同的模式

我的数据库中有以下表,所有表都具有相同的表名但不同的模式.

  • dbo.Versions
  • bpm.Versions
  • wf.Version
  • ...

所有x.Versions对Version表都有一个FK.

我已经从它创建了POCO类(这给了我类Version,Version1,.... - 我已经将classNames重命名为Version和BPMVersion,....但是映射仍然存在于右表中.

这是我映射到bpm.Versions的BPMVersion映射的示例

// Primary Key
this.HasKey(t => t.Id);

// Properties
// Table & Column Mappings
this.ToTable("Version", "bpm");
this.Property(t => t.Id).HasColumnName("Id");
this.Property(t => t.VersionId).HasColumnName("VersionId");
this.Property(t => t.BPMId).HasColumnName("BPMId");

// Relationships
this.HasRequired(t => t.BPM)
    .WithMany(t => t.BPMVersions)
    .HasForeignKey(d => d.BPMId);
this.HasRequired(t => t.Version)
   .WithMany(t => t.BPMVersions)
    .HasForeignKey(d => d.VersionId);
Run Code Online (Sandbox Code Playgroud)

创建迁移脚本时,我遇到以下异常: 实体类型'BPMVersion'和'Version'不能共享表'Versions',因为它们不在同一类型层次结构中或者没有有效的一对一外键与它们之间匹配主键的关系.

我在互联网上发现了以下博客,它认为EF有同名但不同架构的表存在问题(https://entityframework.codeplex.com/workitem/1641http://geekswithblogs.net/tonyt/ archive/2013/07/02/153327.aspx)

反正有没有重命名表名来避免这个问题?

c# entity-framework database-migration database-schema ef-code-first

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

模拟上的所有调用都必须具有相应的设置

我有一些遗留代码,我想进行单元测试.我创建了第一个moq测试但是我得到以下异常:

Moq.MockException:IConnection.SendRequest(ADF.Messaging.Contract.ConfigServer.GetDataVersionRequest)调用失败,模拟行为为Strict.模拟上的所有调用都必须具有相应的设置.

重要的代码:

课堂资产:

Public Property Connection() As IConnection
    Get
        Return _connection
    End Get
    Set(ByVal value As IConnection)
        _connection = value
    End Set
End Property
Run Code Online (Sandbox Code Playgroud)

应该测试的方法:(_ connect)实际上是一个创建tcp套接字的类,我想要模拟该属性,以便SendRequest返回我想要的内容.

Public Function GetVersion(ByVal appID As Contract.ApplicationID) As Contract.DataVersion
    EnsureConnected()
    Dim req As GetDataVersionRequest = New GetDataVersionRequest(appID)

    Dim reply As CentralServiceReply = _connection.SendRequest(req) //code I want to mock
    Utils.Check.Ensure(TypeOf reply Is GetDataVersionReply, String.Format("Unexpected type: {0}, expected GetDataVersionReply!", reply.GetType()))

    Dim version As Contract.DataVersion = CType(reply, GetDataVersionReply).Version
    version.UpgradeOwners()
    If (Not version.IsSupported) Then
        Return Contract.DataVersion.UNSUPPORTED
    End If …
Run Code Online (Sandbox Code Playgroud)

.net unit-testing mstest moq mocking

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

引用的项目x不存在

大家好,我将一个项目的解决方案从 vs2008 升级到了 vs2010。

但现在我有一个奇怪的问题。我在多个解决方案(3 个解决方案)中引用了一个项目,其中 2 个解决方案中引用出错。

我可以添加引用(项目引用),但是当我构建时,我收到警告,引用的项目 x 不存在。还有错误,我必须添加参考。

我已经删除并再次添加了该项目,与参考文献相同,但没有结果。

在此输入图像描述

在此输入图像描述

有人有什么想法吗?

问候,

乔纳森

c# reference project visual-studio

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

在EF迁移期间更改数据库选项

我们为我的dataaccess层启用了一些POCO类和迁移,我们创建了一个初始迁移 - 注意我们使用CreateDatabaseIfNotExist数据库初始化.

但是在数据库中我希望有一个使用SQL Filestream的MessageBody字段,因为文件流的EF限制 - 我们尝试在迁移脚本中手动完成.

我们执行以下sql命令.

Sql("alter table [msg].[Message] add [MessageBody] varbinary(max) FILESTREAM not null");
Run Code Online (Sandbox Code Playgroud)

但我必须设置文件流选项 文件流选项

所以我想在迁移期间/之前执行以下命令.

ALTER DATABASE CURRENT SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL)
Run Code Online (Sandbox Code Playgroud)

但是当添加这个bedore时,表的创建我得到错误:多语句事务中不允许ALTER DATABASE语句.

当您想自动创建数据库时,调整数据库选项的最佳方法是什么?是否有可能在进程执行实际迁移之前拦截迁移进程以执行某些sql?

database migration entity-framework ef-code-first sqlfilestream

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

Socket.BeginConnect 与 Socket.Connect

我想连接到 aSocket但我发现了 2 种不同的连接方法:BeginConnectConnect. 有谁知道这2个的区别?也BeginConnect需要打电话EndConnect吗?

Socket.Connect: http : //msdn.microsoft.com/en-us/library/ych8bz3x.aspx

Socket.BeginConnect http://msdn.microsoft.com/en-us/library/6aeby4wt%28VS.80%29.aspx

使用一种方法比另一种方法有优势吗?

.net sockets tcp connect

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