Sök…


Anslut till en befintlig databas

För att uppnå den enklaste uppgiften i Entity Framework - för att ansluta till en befintlig databas ExampleDatabase på din lokala instans av MSSQL måste du bara implementera två klasser.

Först är entitetsklassen, som kommer att kartläggas till vår databastabell dbo.People .

    class Person
    {
        public int PersonId { get; set; }
        public string FirstName { get; set; }
    }

Klassen kommer att använda Entity Framework konventioner och karta för att tabellen dbo.People som förväntas ha primär nyckel PersonId och en varchar (max) egenskap FirstName .

För det andra är kontextklassen som härstammar från System.Data.Entity.DbContext och som hanterar entitetsobjekten under körning, pupulerar dem från databasen, hanterar samtidighet och sparar dem tillbaka till databasen.

    class Context : DbContext
    {
        public Context(string connectionString) : base(connectionString)
        {
            Database.SetInitializer<Context>(null);
        }

        public DbSet<Person> People { get; set; }
    }

Tänk på att i konstruktören av vårt sammanhang måste vi ställa in databasinitieraren till noll - vi vill inte att Entity Framework ska skapa databasen, vi vill bara komma åt den.

Nu kan du manipulera data från den tabellen, t.ex. ändra FirstName på första person i databasen från en konsolapplikation som denna:

    class Program
    {
        static void Main(string[] args)
        {
            using (var ctx = new Context("DbConnectionString"))
            {
                var firstPerson = ctx.People.FirstOrDefault();
                if (firstPerson != null) {
                    firstPerson.FirstName = "John";
                    ctx.SaveChanges();
                }
            }
        }
    }

I koden ovan skapade vi förekomst av kontext med ett argument "DbConnectionString". Detta måste anges i vår app.config fil så här:

  <connectionStrings>
    <add  name="DbConnectionString" 
    connectionString="Data Source=.;Initial Catalog=ExampleDatabase;Integrated Security=True" 
    providerName="System.Data.SqlClient"/>
  </connectionStrings>


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow