SQL Server 2012 데이터베이스에 대해 DbContext POCO 방식을 사용하여 Entity Framework 4.3.1을 사용하고 있습니다.datetime에서 탐색 속성이로드되지 않는 이유는 무엇입니까?
나는 데이터베이스에있는 두 테이블을 가지고 있고는 다음과 같습니다 :
참고 : 모든 데이터베이스에 지정된 외부 키가 없습니다 - I 만의 관계를 시행하고있다가 모델 (나는 데이터베이스를 변경할 수 없다).
그들은 각각 다음과 같습니다 그들에 하나 개의 데이터 행이 : 이제
:
public class Two
{
public long TwoId { get; set; }
public string OneId { get; set; }
public virtual One One { get; set; }
}
public class One
{
public string OneId { get; set; }
public DateTime DeliveryDate { get; set; }
public virtual ICollection<Two> Twos { get; private set; }
public void AddTwo(Two two)
{
if (two == null)
throw new ArgumentNullException("two");
if (Twos == null)
Twos = new List<Two>();
if (!Twos.Contains(two))
Twos.Add(two);
two.One = this;
}
}
그리고 이것은 환경을 말한다 : 나는 내 콘솔에 인쇄 Why is this printed?
를 얻을 코드의이 비트 실행하면
public class TestContext : DbContext
{
public TestContext(string conectionString)
: base(conectionString)
{
Configuration.LazyLoadingEnabled = true;
Ones = Set<One>();
Twos = Set<Two>();
}
public DbSet<One> Ones { get; private set; }
public DbSet<Two> Twos { get; private set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
var one = modelBuilder.Entity<One>();
one.ToTable("One");
one.HasKey(d => d.OneId);
var two = modelBuilder.Entity<Two>();
two.ToTable("Two");
two.HasKey(d => new
{
d.OneId,
d.TwoId
});
two.Property(p => p.TwoId)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
two.HasRequired(t => t.One)
.WithMany(o => o.Twos)
.HasForeignKey(o => o.OneId);
base.OnModelCreating(modelBuilder);
}
}
- 당신이 탐색 속성 (I 채워되어야한다고 볼 수 있듯이 내가 기대하지 않습니다 심지어 명시 적으로)을 포함 :
using (var ctx = new TestContext(@"......"))
{
const string oneId = "111348718";
var one = ctx.Ones.Single(o => o.OneId.Equals(oneId));
if (one != null)
{
var sdi = ctx
.Twos
.Include(s => s.One)
.Single(s => s.OneId.Equals(oneId));
if (sdi.One == null)
{
Console.WriteLine("Why is this printed?");
}
else
{
Console.WriteLine("This is what I expect");
}
}
}
이제 이가 정말 이상한 비트이 : 나는 단순히 잘 작동 One
클래스에서 DeliveryDate
속성을 주석 처리하면 (나는 This is what I expect
인쇄 t를 얻을 수 콘솔).
여기에 무슨 문제가 있으며 어떻게 해결할 수 있습니까?
참고 : 나는 올바르게 기대 값으로 설정되어있는 one
변수에 DeliveryDate
특성을 보면 날짜가 데이터베이스에서 확인을해야하며, 엔티티 프레임 워크를 완벽하게 실현 할 수 있도록.
추가 정보 :이 날짜는 중요하지 않습니다라는 사실 - 어떤 단순한 프로퍼티가 떨어지 전체를 일으키는 것 - -이 경우, 여전히 실패한 NVARCHAR 말이에 버그 같은 느낌 나 ...