Should I use an int or a long for the primary key in an entity framework model

c# entity-framework-6 int model primary-key

Question

I am writing an MVC5 Internet application and I have a question about the id field for a model.

Should I use an int or a long for the id in a model? I am talking about the field that is used for the primary key? Is an int enough if the database has 100,000s of records? Is an int in c# different than an int in a SQL database?

Thanks in advance

1
13
7/21/2014 3:46:36 AM

Accepted Answer

Both are OK. It depends on how many records will be in a table. Int allows only 2*10^9 records per table.

If you are sure, that 2*10^9 is enough, use int as a key.

But: If there is a tiny chance that count of records will be more than 2*10^9, use the long. If you don't have any idea how many records you'll have, use long.

3
7/21/2014 3:55:10 AM

Popular Answer

With a type INT, starting at 1, you get over 2 billion possible rows - that should be more than sufficient for the vast majority of cases. With BIGINT, you get roughly 922 quadrillion (922 with 15 zeros - 922'000 billions) - enough for you??

If you use an INT IDENTITY starting at 1, and you insert one row every second, around the clock, you need 66.5 years before you hit the 2 billion limit ....

If you use a BIGINT IDENTITY (BIGINT in T-SQL is defined as long or Int64 in .NET languages) starting at 1, and you insert one thousand rows every second, you need a mind-boggling 292 million years before you hit the 922 quadrillion limit ....

Read more about it (with all the options there are) in the MSDN Books Online.



Related Questions





Related

Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow