相关疑难解决方法(0)

EF6:导航属性外键到外键

我有一个遗留数据库,不能使用两个实体在每个实体中都具有外键属性来进行更改:

EntityOne
    ForeignKey1 (pointing to EntityTwo.ForeignKey2)

EntityTwo
    ForeignKey2 (pointing to EntityOne.ForeignKey1)
Run Code Online (Sandbox Code Playgroud)

这些外键指向彼此。如何将这种关系与EF6对应?如果不可能,是否有任何解决方法?

我用一个测试数据库进行了测试,该数据库实际上具有一个从EntityOne到EntityTwo的外键关系,另一个从EntityTwo到EntityOne的外键关系,并自动生成模型(首先从数据库获取代码),并没有在两个表之间创建任何关系:

public partial class EntityFrameworkTesting : DbContext
{
    public EntityFrameworkTesting()
        : base("name=EntityFrameworkTesting")
    {
    }

    public virtual DbSet<EntityOne> EntityOne { get; set; }
    public virtual DbSet<EntityTwo> EntityTwo { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

通过一些额外的尝试,我成功地在这些实体之间建立了关系。但是,我必须从POCO类中删除外键属性,才能使用MapKey函数。我仍然想访问外键,但是当再次添加外键属性时,收到一条错误消息:“ ForeignKey2:名称:类型中的每个属性名称都必须是唯一的。属性名称'ForeignKey2'已经定义。” 。

基本上,我正在寻找现在具有的关系功能,但是在POCO类上添加了外键属性。

modelBuilder.Entity<EntityTwo>()
            .HasRequired(entity => entity.EntityOne)
            .WithRequiredDependent(entity => entity.EntityTwo)
            .Map(m => m.MapKey("ForeignKey2"));
Run Code Online (Sandbox Code Playgroud)

entity-framework

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

该属性必须是有效的实体类型,并且该属性应具有非抽象的getter和setter.实体框架

我在实体框架中首先从代码创建数据库时遇到问题.我有以下三个类1 Person,2 PersonAddress,3 PersonEmploymentHistory如下所示.

namespace DataAccess.Models
{
[Table("Profile")]
public class Person
{
    [Key]
    public int UserId { get; set; }

    [Required(ErrorMessage = "Firstname is required")]
    public string PersonFirstName { get; set; }

    [Required(ErrorMessage = "Surname is required")]
    public string PersonSurname { get; set; }

    [Required(ErrorMessage = "Email is required")]
    [DataType(DataType.EmailAddress)]
    public string PersonEmail { get; set; }
    public int Age { get; set; }

    [Required(ErrorMessage = "Contact Number required")]
    public Int64 PersonNumber { get; set; }

    public bool IsActive { …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework-6

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

使用SQL Server,我只想要非空值的唯一索引

可能重复:
具有重复NULL的SQL Server UNIQUE约束

在Sql Server中,我希望有一个包含空值和实际值的列.如果列有值,我想确保它是唯一的.该列可以有多行,该列为null.

例如,假设我有一个包含3列的书籍表,即:

Book Number - identity
Title - varchar
ISBN - char
Run Code Online (Sandbox Code Playgroud)

现在该表将有一个带有标识列的主键,这很好.问题出在ISBN栏目上.我不希望任何ISBN编号多次出现在表格中,但会有很多书没有ISBN编号(因为我不知道).

是否有任何方法(或最好的方法)来强制对ISBN进行约束?

sql-server

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