我已经在我正在使用的文件夹中添加了一个远程存储库:
git remote add origin https://github.com/<username>/<repo>.git
Run Code Online (Sandbox Code Playgroud)
但是当我打字的时候
git pull origin master
Run Code Online (Sandbox Code Playgroud)
来自https://github.co/username/xxxxx
*分支主控 - > FETCH_HEAD
致命的:拒绝合并不相关的历史
当我打字的时候
From https://github.com/<username>/<repo>
* branch master -> FETCH_HEAD
fatal: refusing to merge unrelated histories
Run Code Online (Sandbox Code Playgroud) 我正在将一个遗留数据库迁移到一个新数据库,我们需要主要通过Entity Framework Code-First来访问和"管理"(尽管它可能听起来像是一样).
我们正在使用MS SQL Server 2014.
遗留数据库包含一些带有计算列的表.典型的GUID和DateTime的东西.
从技术上讲,这些列没有计算列规范,而是使用NEWID()和给定默认值GETDATE()
我们都知道配置DbContext处理这些属性非常容易,如下所示:
modelBuilder.Entity<Foo>()
.Property(t => t.Guid)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed);
modelBuilder.Entity<Bar>()
.Property(t => t.DTS)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed);
Run Code Online (Sandbox Code Playgroud)
上述内容将指示实体框架忽略在INSERTs和期间提交此类属性的任何提供值UPDATEs.
但现在我们需要允许导入旧记录并维护OLD值,包括PRIMARY KEY,标记为IDENTITY
这意味着我们将不得不设置Id,Guid以及DTS性能DatabaseGeneratedOption.None,同时插入这些记录.
对于这种情况Id,我们必须以某种方式SET IDENTITY_INSERT ... ON/OFF在连接会话中执行.
我们也希望通过Code-First执行此导入过程.
如果我修改模型并"临时"并DatabaseGeneratedOption.None在创建数据库之后将这些属性设置为,我们将得到典型的:
自创建数据库以来,支持上下文的模型已更改.考虑使用Code First Migrations来更新数据库.
我知道我们可以生成一个空的编码迁移,-IgnoreChanges以"建立"这个最新版本的上下文,但这不是一个可接受的策略,因为我们必须来回运行空迁移这个目的.
我们考虑过将这些属性赋予可空类型,即
public class Foo
{
...
public Guid? Guid { get; …Run Code Online (Sandbox Code Playgroud) sql-server entity-framework identity-insert ef-code-first ef-migrations
(这曾经是一个由两部分组成的问题,但由于第二部分确实是重要的部分,我决定将其拆分为两个单独的帖子.请参阅使用序列化在第二部分的实体框架中的两个ObjectContexts之间复制实体.
我想为我的实体模型创建一个相当通用的"克隆"数据库.此外,我可能需要支持不同的提供商等.我正在使用ObjectContextAPI.
我已经知道这个问题和EntityConnectionStringBuilder MDSN文档示例,但是我需要知道是否有一种编程方式来获取值以初始化Provider和Metadata属性EntityConnectionStringBuilder?
using (var sourceContext = new EntityContext()) {
var sourceConnection = (EntityConnection) sourceContext.Connection;
var targetConnectionBuilder = new EntityConnectionStringBuilder();
targetConnectionBuilder.ProviderConnectionString = GetTargetConnectionString();
targetConnectionBuilder.Provider = "System.Data.SqlClient"; // want code
targetConnectionBuilder.Metadata = "res://*/EntityModel.csdl|res://*/EntityModel.ssdl|res://*/EntityModel.msl"; // want code
using (var targetContext = new EntityContext(targetConnectionBuilder.ConnectionString)) {
if (!targetContext.DatabaseExists())
targetContext.CreateDatabase();
// how to copy all data from the source DB to the target DB???
} …Run Code Online (Sandbox Code Playgroud) 因此,当我没有DB同步时(直到最新的迁移,实际上根本没有DB)并且已经对我的模型进行了实质性更改,我在尝试生成迁移时遇到了一个基本问题.
这是具体细节:
我意识到在#5失败后我现在可以运行#4.然后重新尝试#5和voilá.
我的问题是,如果这是解决这种愚蠢局面的预期方法.
我知道这可能已经被认为是一个疯狂的问题,但我正在寻找有关如何继续将所有数据(即所有实体和关系)从一个新创建的支持复制到另一个商店的最受过教育的建议和PROVEN建议.请参阅实体框架中的"克隆"EntityConnections和ObjectContexts以了解我是如何设置它的.ObjectContextObjectContext
我已经看到了关于Entity Framework的克隆数据,但是:
我正在寻找整个辣酱玉米饼馅,即整个对象图:所有实体和关系.稍后,我会选择对象图的哪些部分进行更精细的选择
根据我下面的更新,我没有使序列化工作,但仅限于特殊情况.我觉得它真的是一个不那么复杂的任务,但它却出人意料地具有挑战性.我肯定需要一些有关如何使其工作的见解.
好的,这是我到目前为止所尝试的.
我知道当我使用Detach/ Attachpower duo时,关系是kaput- 我实际上想要保留整个对象图.
因此,我在考虑使用以下MergeOption.NoTracking选项加载根实体:
var serializer = new DataContractSerializer(typeof(Root));
var query = (ObjectQuery<Root>) sourceContext.Roots
.Include(d => d.Children.Select(c => c.MoreChildren.Select(r => r.EvenMoreChildren)))
.Include(d => d.Children.Select(c => c.MoreChildren.Select(r => r.MoreAndMoreChildren)))
.Include(d => d.Children.Select(c => c.MoreChildren.Select(r => r.Shizzle)));
foreach (var d in query.Execute(MergeOption.NoTracking)) {
//sourceContext.Detach(d); // not needed
Print(d);
using …Run Code Online (Sandbox Code Playgroud) 我在IIS上托管了WCF服务.出于商业原因,我不能发布此实例的公共URL,但我相信你会得到我的意思:
问题是,为了到达我的端点,似乎我已经包含Service.svc了路径段的一部分,即,我必须使用这样的URL:
http://<domain>/<app-name>/Service.svc/<relative-path>
我怎么能避免这个?我的意思是,我想通过以下方式访问我的服务:
http://<domain>/<app-name>/<relative-path>
当我在开发过程中自我托管服务时,我完全能够做到这一点.
最后,但这不是那么超然,浏览到http://<domain>/<AppName>/Service.svcURL会显示标准服务信息页面:
有没有办法可以防止这种情况发生?
