我有一个现有的旧SQL Server数据库,我需要在其上与EF进行一些映射。
我遇到了与varchar(2)
主键相关联的外键问题。
问题在于主键具有尾随空格而另一个表具有相同值而没有尾随空格的记录,链接对象将为null(在SQL Server上它加入它们就好了,它返回正确的数据SQL跟踪,以后会以某种方式丢失。)
例如:'A '
不与EF中的'A'
一起加入(但它在SQL Server Management Studio中加入)。
是否有任何流体API设置或某些解决方法可以使其工作?
注意:遗憾的是我无法在数据库中进行更改。
代码如下所示:
public partial class Shift
{
[Column("Shift")][StringLength(2)][Key]
public string Id { get; set; }
[Column("Descr")][StringLength(25)]
public string Description { get; set; }
[Column("FromT")]
public DateTime? From { get; set; }
[Column("ToT")]
public DateTime? To { get; set; }
}
public partial class Controller
{
[Column("conID")][Key]
public int Id { get; set; }
[Column("conCode")][Required][StringLength(25)]
public string Code { get; set; }
[Column("conName")][StringLength(150)]
public string Name { get; set; }
[Column("areaID")]
public int AreaId { get; set; }
public virtual Shift Shift { get; set; }
public short Active { get; set; }
}
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
modelBuilder.Entity<Controller>().Property(e => e.Code).IsUnicode(false);
modelBuilder.Entity<Controller>().HasOptional(e => e.Shift).WithMany()
.Map(m => { m.MapKey("Shift"); });
}