xtraGrid и Entity Framework
От: posterbb  
Дата: 03.08.09 17:28
Оценка:
Проблема следующая:

Есть в БД таблица Sites(Url, Login, Password). С помощью Entity Framework получаю коллекцию объектов. Привязываю ее к xtraGrid
public partial class fmAccounts : DevExpress.XtraEditors.XtraForm
    {
        public NewsClientDBEntities DB { get; set; }

        public fmAccounts()
        {
            InitializeComponent();
        }

        public fmAccounts(NewsClientDBEntities newsClientDBEntities)
        {
            DB = newsClientDBEntities;
            InitializeComponent();
        }

        private void fmAccounts_Load(object sender, EventArgs e)
        {
            if(DB == null)
                DB = new NewsClientDBEntities();

            FillGridSites();
        }

        private void FillGridSites()
        {
            GridSites.DataSource = DB.Sites;
        }
}

Далее добавляю в коллекцию сайт

        private void btnEditSite_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            Site site = new Site();
            site.ID = Guid.NewGuid();
            site.Url = "1";
            site.Login = "2";
            site.Password = "3";
            site.CreationDate = DateTime.Now;
            site.EditDate = DateTime.Now;

            DB.AddToSites(site);
            DB.SaveChanges();

            GridSites.RefreshDataSource();
        }


GridSites — это xtraGrid. После добавления нового сайта не могу обновить грид (вновь добавленный сайт никак не хочет появляться в таблице)

P.S. Помогите, пожалуйста, весь день сегодня убил на это

04.08.09 00:42: Перенесено модератором из '.NET' — TK
Re: xtraGrid и Entity Framework
От: mrjeka Россия  
Дата: 04.08.09 07:54
Оценка:
Здравствуйте, posterbb, Вы писали:

P>Проблема следующая:

P> DB.AddToSites(site);
P> DB.SaveChanges();
//Убедитесь, что после этих действий у вас DB.Sites не равно null
P> GridSites.RefreshDataSource();
//и попробуйте сделать так
//GridSites.DataSource = DB.Sites;
P> }
P>[/c#]
Re[2]: xtraGrid и Entity Framework
От: posterbb  
Дата: 04.08.09 13:03
Оценка:
Здравствуйте, mrjeka, Вы писали:

M>Здравствуйте, posterbb, Вы писали:


P>>Проблема следующая:

P>> DB.AddToSites(site);
P>> DB.SaveChanges();
M>//Убедитесь, что после этих действий у вас DB.Sites не равно null
P>> GridSites.RefreshDataSource();
M> //и попробуйте сделать так
M> //GridSites.DataSource = DB.Sites;
P>> }
P>>[/c#]

Немного не так получилось, вот это работает


DB.AddToSites(site);
DB.SaveChanges();

DB = new NewsClientDBEntities();
GridSites.DataSource = DB.Sites;



Извините за глупый вопрос, на сколько плохо создавать еще один экземпляр

DB = new NewsClientDBEntities();
Re[3]: xtraGrid и Entity Framework
От: mrjeka Россия  
Дата: 05.08.09 06:47
Оценка:
Здравствуйте, posterbb, Вы писали:

P>Извините за глупый вопрос, на сколько плохо создавать еще один экземпляр


Ну я не вижу необходимости пересоздавать объект. Особенно, если он используется другими контролами. Если еще у тех контролов стоит какое-нибудь событие на биндинг. И память, если Вы загружаете много данных.
ИМХО хотя старый объект поместится на удаление, но пока GC не пройдется, он так и будет занимать память.
Re: xtraGrid и Entity Framework
От: mrjeka Россия  
Дата: 05.08.09 06:55
Оценка:
Здравствуйте, posterbb, Вы писали:

P>Проблема следующая:



P>
P>        private void btnEditSite_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
P>        {
P>            Site site = new Site();
P>            site.ID = Guid.NewGuid();
P>            site.Url = "1";
P>            site.Login = "2";
P>            site.Password = "3";
P>            site.CreationDate = DateTime.Now;
P>            site.EditDate = DateTime.Now;

P>            DB.AddToSites(site);
P>            DB.SaveChanges();
              //Вспомнил решение этой хни... тупо что не работает RefreshDataSource у GridControl, зато раборает метод у GridView этого GridControla
              //По умолчанию он называется gridView1
P>            //GridSites.RefreshDataSource();
              gridView1.RefreshData();   
P>        } 
P>
Re[4]: xtraGrid и Entity Framework
От: posterbb  
Дата: 06.08.09 09:36
Оценка:
Здравствуйте, mrjeka, Вы писали:

M>Здравствуйте, posterbb, Вы писали:


P>>Извините за глупый вопрос, на сколько плохо создавать еще один экземпляр


M>Ну я не вижу необходимости пересоздавать объект. Особенно, если он используется другими контролами. Если еще у тех контролов стоит какое-нибудь событие на биндинг. И память, если Вы загружаете много данных.

M>ИМХО хотя старый объект поместится на удаление, но пока GC не пройдется, он так и будет занимать память.

Без "пересоздавания" объекта не работает. Я весь день "рефрешил" все что можно и у грида и у его View. Если связывать грид с обычной коллекцией, например List<T>, то рефреш помогает, а если использовать данные через Entity Framework, то не работает.
Re: xtraGrid и Entity Framework
От: Dmitry Ilin  
Дата: 18.08.09 07:47
Оценка:
Здравствуйте, posterbb, Вы писали:

P>Проблема следующая:


P>Есть в БД таблица Sites(Url, Login, Password). С помощью Entity Framework получаю коллекцию объектов. Привязываю ее к xtraGrid

P>
P>public partial class fmAccounts : DevExpress.XtraEditors.XtraForm
P>    {
P>        public NewsClientDBEntities DB { get; set; }

P>        public fmAccounts()
P>        {
P>            InitializeComponent();
P>        }

P>        public fmAccounts(NewsClientDBEntities newsClientDBEntities)
P>        {
P>            DB = newsClientDBEntities;
P>            InitializeComponent();
P>        }

P>        private void fmAccounts_Load(object sender, EventArgs e)
P>        {
P>            if(DB == null)
P>                DB = new NewsClientDBEntities();

P>            FillGridSites();
P>        }

P>        private void FillGridSites()
P>        {
P>            GridSites.DataSource = DB.Sites;
P>        }
P>}
P>

P>Далее добавляю в коллекцию сайт

P>
P>        private void btnEditSite_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
P>        {
P>            Site site = new Site();
P>            site.ID = Guid.NewGuid();
P>            site.Url = "1";
P>            site.Login = "2";
P>            site.Password = "3";
P>            site.CreationDate = DateTime.Now;
P>            site.EditDate = DateTime.Now;

P>            DB.AddToSites(site);
P>            DB.SaveChanges();

P>            GridSites.RefreshDataSource();
P>        } 
P>


P>GridSites — это xtraGrid. После добавления нового сайта не могу обновить грид (вновь добавленный сайт никак не хочет появляться в таблице)


P>P.S. Помогите, пожалуйста, весь день сегодня убил на это


Посмотрите метод Refresh у DB. Может в EF он поможет.

У меня Linq2Sql используется в проекте, тоже голову ломаю с рефрешем на форме. Пока что ничего не приходит в голову кроме создания нового экземпляра модели.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.