C# 实体框架代码第一个连接表在插入时复制数据(Fluent API)

C# 实体框架代码第一个连接表在插入时复制数据(Fluent API),c#,.net,entity-framework,code-first,C#,.net,Entity Framework,Code First,我目前正在创建一个连接到Azure移动服务的Windows 8.1应用程序,并首先使用EF6代码创建数据库 目前的表格有账户、用户、业务、档案图片和Blob。创建概要文件时,将在帐户表中插入一个条目,然后根据用户的选择,在用户或业务表中插入一个条目 当实例化帐户时,将在帐户模型中创建新的用户或业务和档案图片模型 我打算实现ProfilePicture的方法是在创建帐户时设置默认的配置文件图片,因此我从表中选择默认的配置文件图片blob,并在帐户中创建ProfilePicture模型时使用它。我遇

我目前正在创建一个连接到Azure移动服务的Windows 8.1应用程序,并首先使用EF6代码创建数据库

目前的表格有
账户
用户
业务
档案图片
Blob
。创建概要文件时,将在
帐户
表中插入一个条目,然后根据用户的选择,在
用户
业务
表中插入一个条目

当实例化
帐户
时,将在
帐户
模型中创建新的
用户
业务
档案图片
模型

我打算实现
ProfilePicture
的方法是在创建
帐户时设置默认的配置文件图片,因此我从表中选择默认的配置文件图片blob,并在
帐户中创建
ProfilePicture
模型时使用它。我遇到的问题是,当传递从查询返回的
Blob
时,它似乎也会将Blob插入
Blob
表中,从而复制条目,我不知道为什么。(希望下面的App.xaml.cs代码会更清楚一些)

我完全不知道为什么会发生这种情况。仍在掌握FluentAPI,因此我的知识不是最好的,因此任何提示/指导以及帮助都将不胜感激!谢谢


(对不起,代码太多了)

服务方 数据对象

public class Account : EntityData
{
    public string Username { get; set; }
    public string Password { get; set; }

    public User User { get; set; }
    public Business Business { get; set; }
    public ProfilePicture ProfilePicture { get; set; }
}

public class Business : EntityData
{
    public string Name { get; set; }
    public string ContactNo { get; set; }

    public Account Account { get; set; }
}

public class User : EntityData
{
    public string FirstName { get; set; }
    public string LastName { get; set; }

    public Account Account { get; set; }
}

public class ProfilePicture : EntityData
{
    public Account Account { get; set; }
    public Blob Blob { get; set; }
}

public class Blob : EntityData
{
    public string ContainerName { get; set; }
    public string ResourceName { get; set; }
    public string SASQueryString { get; set; }
    public string ImageURI { get; set; }
}
public class Account
{
    public string Id { get; set; }
    public string Username { get; set; }
    public string Password { get; set; }

    public User User { get; set; }
    public Business Business { get; set; }
    public ProfilePicture ProfilePicture { get; set; }
}

public class Business
{
    public string Id { get; set; }
    public string Name { get; set; }
    public string ContactNo { get; set; }
}

public class User
{
    public string Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

public class ProfilePicture
{
    public string Id { get; set; }

    public Account Account { get; set; }
    public Blob Blob { get; set; }
}

public class Blob
{
    public string Id { get; set; }
    public string ContainerName { get; set; }
    public string ResourceName { get; set; }
    public string SASQueryString { get; set; }
    public string ImageURI { get; set; }
}
Blob blob1 = new Blob
        {
            ContainerName = "Container1",
            ImageURI = "Uri1",
            ResourceName = "DefaultProfilePic",
            SASQueryString = "SomethingGoesHere"
        };
        await BlobTable.InsertAsync(blob1);

        List<Blob> pictures = await BlobTable.Where(blob => blob.ContainerName == "Container1").ToListAsync();

        Account account = new Account
        {
            Username = "User123",
            User = new User
            {
                FirstName = "John",
                LastName = "Smithy"
            },
            ProfilePicture = new ProfilePicture
            {
                Blob = pictures.First()
            },
            Password = "Password123"
        };

        string result = await MobileService.InvokeApiAsync<Account, string>("customAccount", account);
实体配置(仅限其构造函数):

客户端 型号

public class Account : EntityData
{
    public string Username { get; set; }
    public string Password { get; set; }

    public User User { get; set; }
    public Business Business { get; set; }
    public ProfilePicture ProfilePicture { get; set; }
}

public class Business : EntityData
{
    public string Name { get; set; }
    public string ContactNo { get; set; }

    public Account Account { get; set; }
}

public class User : EntityData
{
    public string FirstName { get; set; }
    public string LastName { get; set; }

    public Account Account { get; set; }
}

public class ProfilePicture : EntityData
{
    public Account Account { get; set; }
    public Blob Blob { get; set; }
}

public class Blob : EntityData
{
    public string ContainerName { get; set; }
    public string ResourceName { get; set; }
    public string SASQueryString { get; set; }
    public string ImageURI { get; set; }
}
public class Account
{
    public string Id { get; set; }
    public string Username { get; set; }
    public string Password { get; set; }

    public User User { get; set; }
    public Business Business { get; set; }
    public ProfilePicture ProfilePicture { get; set; }
}

public class Business
{
    public string Id { get; set; }
    public string Name { get; set; }
    public string ContactNo { get; set; }
}

public class User
{
    public string Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

public class ProfilePicture
{
    public string Id { get; set; }

    public Account Account { get; set; }
    public Blob Blob { get; set; }
}

public class Blob
{
    public string Id { get; set; }
    public string ContainerName { get; set; }
    public string ResourceName { get; set; }
    public string SASQueryString { get; set; }
    public string ImageURI { get; set; }
}
Blob blob1 = new Blob
        {
            ContainerName = "Container1",
            ImageURI = "Uri1",
            ResourceName = "DefaultProfilePic",
            SASQueryString = "SomethingGoesHere"
        };
        await BlobTable.InsertAsync(blob1);

        List<Blob> pictures = await BlobTable.Where(blob => blob.ContainerName == "Container1").ToListAsync();

        Account account = new Account
        {
            Username = "User123",
            User = new User
            {
                FirstName = "John",
                LastName = "Smithy"
            },
            ProfilePicture = new ProfilePicture
            {
                Blob = pictures.First()
            },
            Password = "Password123"
        };

        string result = await MobileService.InvokeApiAsync<Account, string>("customAccount", account);
App.xaml.cs

public class Account : EntityData
{
    public string Username { get; set; }
    public string Password { get; set; }

    public User User { get; set; }
    public Business Business { get; set; }
    public ProfilePicture ProfilePicture { get; set; }
}

public class Business : EntityData
{
    public string Name { get; set; }
    public string ContactNo { get; set; }

    public Account Account { get; set; }
}

public class User : EntityData
{
    public string FirstName { get; set; }
    public string LastName { get; set; }

    public Account Account { get; set; }
}

public class ProfilePicture : EntityData
{
    public Account Account { get; set; }
    public Blob Blob { get; set; }
}

public class Blob : EntityData
{
    public string ContainerName { get; set; }
    public string ResourceName { get; set; }
    public string SASQueryString { get; set; }
    public string ImageURI { get; set; }
}
public class Account
{
    public string Id { get; set; }
    public string Username { get; set; }
    public string Password { get; set; }

    public User User { get; set; }
    public Business Business { get; set; }
    public ProfilePicture ProfilePicture { get; set; }
}

public class Business
{
    public string Id { get; set; }
    public string Name { get; set; }
    public string ContactNo { get; set; }
}

public class User
{
    public string Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

public class ProfilePicture
{
    public string Id { get; set; }

    public Account Account { get; set; }
    public Blob Blob { get; set; }
}

public class Blob
{
    public string Id { get; set; }
    public string ContainerName { get; set; }
    public string ResourceName { get; set; }
    public string SASQueryString { get; set; }
    public string ImageURI { get; set; }
}
Blob blob1 = new Blob
        {
            ContainerName = "Container1",
            ImageURI = "Uri1",
            ResourceName = "DefaultProfilePic",
            SASQueryString = "SomethingGoesHere"
        };
        await BlobTable.InsertAsync(blob1);

        List<Blob> pictures = await BlobTable.Where(blob => blob.ContainerName == "Container1").ToListAsync();

        Account account = new Account
        {
            Username = "User123",
            User = new User
            {
                FirstName = "John",
                LastName = "Smithy"
            },
            ProfilePicture = new ProfilePicture
            {
                Blob = pictures.First()
            },
            Password = "Password123"
        };

        string result = await MobileService.InvokeApiAsync<Account, string>("customAccount", account);
Blob blob1=新Blob
{
ContainerName=“Container1”,
ImageURI=“Uri1”,
ResourceName=“DefaultProfilePic”,
SASQueryString=“SomethingGoesher”
};
等待BlobTable.InsertAsync(blob1);
列表图片=等待BlobTable.Where(blob=>blob.ContainerName==“Container1”).toListSync();
帐户=新帐户
{
Username=“User123”,
用户=新用户
{
FirstName=“约翰”,
LastName=“史密斯”
},
ProfilePicture=新的ProfilePicture
{
Blob=pictures.First()
},
Password=“Password123”
};
字符串结果=等待MobileService.InvokeApiAsync(“customAccount”,account);