user259286
user259286

Reputation: 1005

Why does Entity Framework make certain fields EnityKeys when they are not even PK's in the source DB?

Starting out on an Entity Framework project.

Imported the Db I am going to use and right away noticed that many table fields were made into EntityKey types and the source fields are not even Keys. Doesn't seem to be a pattern as to which fields were made EntityKeys and which were not.

Is this normal? There were no options for this in the wizard. I don;t want to have to go through and remove this property for all the fields where it was added.

Thanks for your advice!

Upvotes: 1

Views: 172

Answers (2)

RPM1984
RPM1984

Reputation: 73123

Each entity on your model requires a unique key, so EF can track and retrieve/persist these entities based on their unique identifier.

If your tables in your database don't have primary keys, then your database is not relational and therefore should not be used by an ORM like EF which is predominantly designed for RDBMS.

If you had an entity like this:

public class Orders
{
   public string Name { get; set; }
   public double Price { get; set; }
}

How would you retrieve a single order? How would you save a single order?

Crucial LINQ methods such as SingleOrDefault() would be useless, as there is no guarantee that this won't throw an exception:

var singleOrder = ctx.Orders.SingleOrDefault(x => x.Name == "Foo");

Whilst if you had an EntityKey and PK called "OrderId", this is guaranteed to not throw an exception:

var singleOrder = ctx.Orders.SingleOrDefault(x => x.OrderId == 1);

Upvotes: 1

xplat
xplat

Reputation: 8636

http://msdn.microsoft.com/en-us/library/dd283139.aspx

I think as soon as you read the first paragraph you will understand the role of entity keys in Entity Framework.

Upvotes: 0

Related Questions