locked
Problème avec une association de bases de données RRS feed

  • Question

  • Bonjour,

    Voilà dans mon application j'ai plusieurs base de données, une EventsItem et une TilesItem.

    Dans ma base EventsItem, je voudrais faire un lien vers TilesItem. J'ai don fait comme ça :

    // Internal column for the associated ToDoCategory ID value
            [Column]
            internal int _tilesId;
    
            // Entity reference, to identify the ToDoCategory "storage" table
            private EntityRef<TilesItem> _tiles = new EntityRef<TilesItem>();
    
            // Association, to describe the relationship between this key and that "storage" table
            [Association(Storage = "_tiles", ThisKey = "_tilesId", OtherKey = "Id", IsForeignKey = true)]
            public TilesItem Tiles
            {
                get { return _tiles.Entity; }
                set
                {
                    NotifyPropertyChanging("Tiles");
                    _tiles.Entity = value;
    
                    if (value != null)
                    {
                        _tilesId = value.Id;
                    }
    
                    NotifyPropertyChanging("Tiles");
                }
            }

    Dans mon TilesItem j'ai bien une colonne Id :

    // Define ID: private field, public property, and database column.
            private int _id;
    
            [Column(IsPrimaryKey = true, IsDbGenerated = true, DbType = "INT NOT NULL Identity", CanBeNull = false, AutoSync = AutoSync.OnInsert)]
            public int Id
            {
                get { return _id; }
                set
                {
                    if (_id != value)
                    {
                        NotifyPropertyChanging("Id");
                        _id = value;
                        NotifyPropertyChanged("Id");
                    }
                }
            }

    Ma base TilesItem se créé bien et se remplit bien. Sauf que pour ma base EventsItem quand je fais un db.CreateDatabase(); j'obtiens une erreur :

    Une exception de type 'System.Data.SqlServerCe.SqlCeException' s'est produite dans Microsoft.Phone.Data.Internal.ni.dll mais n'a pas été gérée dans le code utilisateur

    Voila comment je fais la création des bases.

    // Create the database if it does not exist.
                using (DataContextTiles db = new DataContextTiles(Constantes.TilesDBConnectionString))
                {
                    //db.DeleteDatabase();
    
                    if (db.DatabaseExists() == false)
                    {
                        // Create the local database.
                        db.CreateDatabase();
    
                        // Prepopulate the categories.
                        db.Items.InsertOnSubmit(new TilesItem { Title = "Se Reposer", ImageUri = "../Assets/picto/se-reposer.jpg", ImageUriTiles = "Assets/picto/Tiles/se-reposer-tiles.png", ImageUriTilesLight = "Assets/picto/Tiles/se-reposer-tiles-light.png", GroupTag = "Catégorie", IsVisible = true, Ordre = 8 });
                        db.Items.InsertOnSubmit(new TilesItem { Title = "Se Divertir", ImageUri = "../Assets/picto/se-divertir.jpg", ImageUriTiles = "Assets/picto/Tiles/se-divertir-tiles.png", ImageUriTilesLight = "Assets/picto/Tiles/se-divertir-tiles-light.png", GroupTag = "Catégorie", IsVisible = false, Ordre = 1 });
                        db.Items.InsertOnSubmit(new TilesItem { Title = "Se Restaurer", ImageUri = "../Assets/picto/se-restaurer.jpg", ImageUriTiles = "Assets/picto/Tiles/se-restaurer-tiles.png", ImageUriTilesLight = "Assets/picto/Tiles/se-restaurer-tiles-light.png", GroupTag = "Catégorie", IsVisible = true, Ordre = 2 });
                        db.Items.InsertOnSubmit(new TilesItem { Title = "Se Promener", ImageUri = "../Assets/picto/se-promener.jpg", ImageUriTiles = "Assets/picto/Tiles/se-promener-tiles.png", ImageUriTilesLight = "Assets/picto/Tiles/se-promener-tiles-light.png", GroupTag = "Catégorie", IsVisible = true, Ordre = 3 });
                        db.Items.InsertOnSubmit(new TilesItem { Title = "Magasins", ImageUri = "../Assets/picto/shop.jpg", ImageUriTiles = "Assets/picto/Tiles/shop-tiles.png", ImageUriTilesLight = "Assets/picto/shop-tiles-light.png", GroupTag = "Catégorie", IsVisible = true, Ordre = 4 });
                        db.Items.InsertOnSubmit(new TilesItem { Title = "Offices de Tourisme", ImageUri = "../Assets/picto/office-de-tourisme.jpg", ImageUriTiles = "Assets/picto/Tiles/office-de-tourisme-tiles.png", ImageUriTilesLight = "Assets/picto/Tiles/office-de-tourisme-tiles-light.png", GroupTag = "Catégorie", IsVisible = true, Ordre = 5 });
                        db.Items.InsertOnSubmit(new TilesItem { Title = "Mon Planning", ImageUri = "../Assets/picto/Calendrier.jpg", ImageUriTiles = "Assets/picto/Tiles/Calendrier-tiles.png", ImageUriTilesLight = "Assets/picto/Tiles/Calendrier-tiles-light.png", GroupTag = "Catégorie", IsVisible = true, Ordre = 6 });
                        db.Items.InsertOnSubmit(new TilesItem { Title = "Photos", ImageUri = "../Assets/picto/photos.jpg", ImageUriTiles = "Assets/picto/Tiles/photos-tiles.png", ImageUriTilesLight = "Assets/picto/Tiles/photos-tiles-light.png", GroupTag = "Catégorie", IsVisible = true, Ordre = 7 });
                        // Save categories to the database.
                        db.SubmitChanges();
                    }
                }
    
                // Create the database if it does not exist.
                using (DataContextEvents db = new DataContextEvents(Constantes.EventsDBConnectionString))
                {
                    db.DeleteDatabase();
    
                    if (db.DatabaseExists() == false)
                    {
                        // Create the local database.
                        db.CreateDatabase();
    
                        // Prepopulate the categories.
                        for (int i = 0; i < 15; i++)
                        {
                            db.Items.InsertOnSubmit(new EventsItem { Title = "Evènement n°" + i + " très très très long", URLPicture = "../Assets/picto/se-reposer.jpg", DateBegin = 1, DateEnd = 2, Text = "Message de l'event", Note = (float)2.4, Price = "5€", Place = "Aix-En-Provence", Theme = "Theme " + i, Latitude = (double)1.3, Longitude = (double)1.2, Website = "http://www.google.fr" }); //,Tiles = new TilesItem { Id = (i % 2) } });
                        }
                        // Save categories to the database.
                        db.SubmitChanges();
                    }
                }

    Merci au courageux qui liront jusqu'à la fin :)

    Au revoir,

    Ludovic

    mardi 23 juillet 2013 13:55

Réponses

Toutes les réponses