6

Wdrażam api internetowe, które będzie pobierać dane za pomocą struktury encji 6. Używam Sql Server 2014 i Visual Studio 2015. Podczas debugowania kodu w klasie CustomerDao widzę wyjątek w obiekcie customerOrderContext, chociaż widzę rekordy w obiekcie klienta. Jednak po uruchomieniu bloku blokowania nie widzę żadnych rekordów.Entity Framework 6 serwerowa wersja błędu: (System.Data.SqlClient.SqlConnection) customerOrderContext.Database.Connection) .ServerVersion

((System.Data.SqlClient.SqlConnection) customerOrderContext.Database.Connection) .ServerVersion

CustomerDao

using (var customerOrderContext = new Entities()) 
       { 
        return (from customer in customerOrderContext.Customers 

          select new CustomerOrder.BusinessObjects.Customers 
          { 
           Id = customer.Id, 
           FirstName = customer.FirstName, 
           LastName = customer.LastName, 
           Address = customer.Address, 
           City = customer.City, 
           Email = customer.Email, 
           Gender = customer.Gender, 
           State = customer.State, 
           Zip = customer.Zip 
          }).ToList(); 
       } 

Ciąg połączenia w pliku konfiguracyjnym jest następująca

<add name="Entities" connectionString="metadata=res://*/EF.CustomerOrderContext.csdl|res://*/EF.CustomerOrderContext.ssdl|res://*/EF.CustomerOrderContext.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=Tom-PC\MSSQLSERVER2014;initial catalog=Ransang;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 

Klasa kontekstu jest następująca:

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

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 

    } 

    public virtual DbSet<Customer> Customers { get; set; } 
    public virtual DbSet<OrderDetail> OrderDetails { get; set; } 
    public virtual DbSet<Order> Orders { get; set; } 
    public virtual DbSet<Product> Products { get; set; } 
} 

enter image description here

CustomProvider.cs

public IEnumerable<BusinessObjects.Customers> GetAllCustomers() 
     { 
      IList<BusinessObjects.Customers> customerCollection = new List<BusinessObjects.Customers>(); 
      dataAccess.CustomerDao.GetAllCustomers(); 
      return customerCollection; 
     } 
+0

Czy otrzymują żadnego wyjątku? * (System.Data.SqlClient.SqlConnection) customerOrderContext.Database.Connection) .ServerVersion * nie wydaje się być komunikatem wyjątku. Gdzie to widziałeś? –

+0

Podczas debugowania kodu w klasie CustomerDao widzę wyjątek w obiekcie customerOrderContext, mimo że widzę rekordy w obiekcie klienta. Jednak po uruchomieniu bloku blokowania nie widzę żadnych rekordów. Myślę, że jest pewien problem z nawiązaniem połączenia i dlatego nie można uzyskać danych do wiadomości Ui – Tom

+0

Co to jest wiadomość wyjątku? –

Odpowiedz

6

Wyjątkiem jest documented, a to dlatego, że połączenie jest zamknięty. Nie ma z tym problemu.

Ale oczywiście masz pusty wynik, ponieważ nie wykorzystać wynik, jesteś po prostu przekazujących new List<BusinessObjects.Customers>() w swojej metodzie:

public IEnumerable<BusinessObjects.Customers> GetAllCustomers() 
{ 
    IList<BusinessObjects.Customers> customerCollection = 
     new List<BusinessObjects.Customers>(); // ← An empty list 
    dataAccess.CustomerDao.GetAllCustomers(); // ← Just executed but didn't use anywhere 
    return customerCollection;     // ← The empty list you created at first 
} 

Musisz return dataAccess.CustomerDao.GetAllCustomers();: