À l'aide d'un GUID pour le numéro d'identification dans une base de données avec ASP.NET MVC

Je suis en apprentissage ASP.NET MVC. Je suis l'un des tutoriaux sur asp.net. Depuis je n'ai pas toujours suivi les tutos à la lettre, j'ai décidé d'utiliser un GUID de la colonne d'identité au lieu d'un entier. Tout fonctionnait bien jusqu'à ce que j'ai obtenu jusqu'à la point de l'ajout d'un nouvel enregistrement dans la base de données par le biais de l'application MVC. Quand j'ai ajouté le nouveau record, il a inséré un vide GUID au lieu d'un générés. Voici le segment de code-behind qui gère l'insertion:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create([Bind(Exclude = "id")]Movie movieToCreate)
{
    try
    {
        _entities.AddToMovieSet(movieToCreate);
        _entities.SaveChanges();

        return RedirectToAction("Index");
    }
    catch
    {
        return View();
    }
}

La [Bind(Exclude = "id")] ligne 'ignore' la colonne ID, puisqu'il est généré automatiquement. Dans le tutoriel, l'ID auto-incrémenté, mais je pense que c'est parce que c'est un entier. J'ai essayé d'ajouter une ligne à cette méthode:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create([Bind(Exclude = "id")]Movie movieToCreate)
{
    try
    {
        movieToCreate.id = Guid.NewGuid();
        _entities.AddToMovieSet(movieToCreate);
        _entities.SaveChanges();

        return RedirectToAction("Index");
    }
    catch
    {
        return View();
    }
}

Mais l'id est toujours un vide GUID. Quelqu'un peut-il me fournir quelques informations sur les raisons de cette et peut-être comment le résoudre?

Apparemment retrait de la [Bind(Exclude)] et de garder la Guid.NewGuid() résout ce problème. Je voudrais quand même savoir pourquoi l'ID est auto incrémenté, mais le GUID n'est pas généré automatiquement.
Les deux valeurs sont générées sur le serveur. Mais l'EF ne voit que le type int car le fournisseur SQL Server renvoie généré ints à partir du serveur, mais pas Id générés. Si vous avez aliéné le contexte et la ré-interrogé, vous pouvez voir les deux.
...mais pas d'Id générés. -> ...mais pas généré de Guid.

OriginalL'auteur Anders | 2009-08-19