Apakah mungkin untuk menggunakan Identitas Asp.net baru dengan Database First dan EDMX? Atau hanya dengan kode dulu?
Inilah yang saya lakukan:
1) Saya membuat Proyek MVC5 baru dan membuat Identitas baru membuat tabel Pengguna dan Peran baru di database saya.
2) Saya kemudian membuka file EDMX Pertama Database saya dan menyeret tabel Pengguna Identitas baru karena saya memiliki tabel lain yang terkait dengannya.
3) Setelah menyimpan EDMX, generator POCO Pertama Database akan otomatis membuat kelas Pengguna. Namun, UserManager dan RoleManager mengharapkan kelas Pengguna mewarisi dari namespace Identity baru (Microsoft.AspNet.Identity.IUser), jadi menggunakan kelas Pengguna POCO tidak akan berfungsi.
Saya kira solusi yang mungkin adalah mengedit Kelas Generasi POCO saya agar kelas Pengguna saya diwarisi dari IUser?
Atau apakah ASP.NET Identity hanya kompatibel dengan Code First Design?
+++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++
Pembaruan: Mengikuti saran Anders Abel di bawah ini, inilah yang saya lakukan. Berhasil, tapi saya bertanya-tanya apakah ada solusi yang lebih elegan.
1) Saya memperluas kelas Pengguna entitas saya dengan membuat kelas parsial dalam namespace yang sama dengan entitas yang saya buat secara otomatis.
namespace MVC5.DBFirst.Entity
{
public partial class AspNetUser : IdentityUser
{
}
}
2) Saya mengubah DataContext saya untuk mewarisi dari IdentityDBContext, bukan DBContext. Perhatikan bahwa setiap kali Anda memperbarui EDMX dan membuat ulang kelas DBContext dan Entitas, Anda harus menyetelnya kembali ke ini.
public partial class MVC5Test_DBEntities : IdentityDbContext<AspNetUser> //DbContext
3) Dalam kelas entitas Pengguna yang dibuat secara otomatis, Anda harus menambahkan kata kunci penggantian ke 4 bidang berikut atau beri komentar pada bidang ini karena diwarisi dari IdentityUser (Langkah 1). Perhatikan bahwa setiap kali Anda memperbarui EDMX dan membuat ulang kelas DBContext dan Entitas, Anda harus menyetelnya kembali ke ini.
override public string Id { get; set; }
override public string UserName { get; set; }
override public string PasswordHash { get; set; }
override public string SecurityStamp { get; set; }