powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Подготовка БД для работы в Silverlight Business Application
20 сообщений из 45, страница 2 из 2
Подготовка БД для работы в Silverlight Business Application
    #37212868
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
samun,

авторВозвращает коллекцию связанных экземпляров сущности CashFlow
при компиляции оно пустое подскажите пожалуйста почему так?

думаю потому, что вам нужно открыть книгу и читать, иначе опыта не получить.
...
Рейтинг: 0 / 0
Подготовка БД для работы в Silverlight Business Application
    #37212878
samun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
уТКа,

я тут на скачивал все не то. вы меня сильно выручите если подскажите автора и название книги.
...
Рейтинг: 0 / 0
Подготовка БД для работы в Silverlight Business Application
    #37213095
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
samun,

даже не знаю что и советовать :)

сам не прочитал ни одной книги, все по форумам, статьям, да практикум.
...
Рейтинг: 0 / 0
Подготовка БД для работы в Silverlight Business Application
    #37219669
samun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
уТКа,

Вот так сделал как Вы думаете правильно ли ?
создал окно CashFlowIDChildWindow2

ему прописал свойства
Код: plaintext
1.
public ProjectUser projectuser { get; set; }
public int ProjectId { get; set; }
добавил на страницу
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
        <riaControls:DomainDataSource LoadedData="cashFlowDomainDataSource_LoadedData" x:Name="cashFlowDomainDataSource" 
                                      QueryName="GetCashFlowsQuery"  Style="{StaticResource DDS}">
            <riaControls:DomainDataSource.FilterDescriptors>
                <riaControls:FilterDescriptor Operator="IsEqualTo" PropertyPath="ProjectId" Value="{Binding ProjectId}" />
            </riaControls:DomainDataSource.FilterDescriptors>
        </riaControls:DomainDataSource>
 <toolkit:BusyIndicator IsBusy="{Binding ElementName=cashFlowDomainDataSource, Path=DomainContext.IsLoading}" >
            <toolkit:DataForm HorizontalAlignment="Left" Margin="12,12,0,0" x:Name="dataForm1" VerticalAlignment="Top" Height="198" Width="354"
                              AutoGenerateFields="True"  ItemsSource="{Binding ElementName=cashFlowDomainDataSource, Path=Data}" AutoEdit="False" EditEnding="dataForm1_EditEnding" AddingNewItem="dataForm1_AddingNewItem" BeginningEdit="dataForm1_BeginningEdit">
            </toolkit:DataForm>
          </toolkit:BusyIndicator>
        <Button x:Name="CancelButton" Content="Отмена" Click="CancelButton_Click" Width="75" Height="23" HorizontalAlignment="Right" Margin="0,12,0,0" Grid.Row="1" />
        <Button x:Name="OKButton" Content="ОК" Click="OKButton_Click" Width="75" Height="23" HorizontalAlignment="Right" Margin="0,12,79,0" Grid.Row="1" />

подписался на событие EditEnding
Код: plaintext
1.
2.
 private void dataForm1_EditEnding(object sender, DataFormEditEndingEventArgs e)
        {      ((CashFlow)(((DataForm)sender).CurrentItem)).ProjectUser = projectuser;    }

и по завершению работы с связанной таблицей нажимается кнопку ОК окна CashFlowIDChildWindow2
обработчик события клик
Код: plaintext
1.
2.
3.
4.
private void OKButton_Click(object sender, RoutedEventArgs e)
        {   this.DialogResult = true;
            dataForm1.CommitEdit();
            cashFlowDomainDataSource.SubmitChanges();   }



окно вызываю так:нажатием на форме кнопки "денежный поток"

Обработчик нажатия кнопки вот так:
Код: plaintext
1.
2.
3.
4.
5.
 private void button1_Click(object sender, RoutedEventArgs e)
        {var win = new CashFlowIDChildWindow2();
            ProjectUser proj = ProjectDataForm.CurrentItem as ProjectUser;
            win.ProjectId = proj.ProjectId;
            win.projectuser = proj;
            win.Show();}
...
Рейтинг: 0 / 0
Подготовка БД для работы в Silverlight Business Application
    #37219740
samun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
уТКа,

Подскажите пожалуйста как ограничить количество элементов добавляемых в DataForm, например для одного клиента можно создать только 5 заказов?

Предположил, что можно сделать так: при нажатии кнопки Add проверить количество записей в DataForm и если оно достигло определенного количества, то выдать сообщение и прервать выполнение добавления новой записи, для этого:
подписаться на событие AddingNewItem
Код: plaintext
<toolkit:DataForm AddingNewItem="dataForm1_AddingNewItem"> </toolkit:DataForm>
И в обработчике написать
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
private void dataForm1_AddingNewItem(object sender, DataFormAddingNewItemEventArgs e)
        {
            
            int i ;
            //int i =  ((DataForm)sender);
            if (i > 5)
            {
                MessageBox.Show("Записей больше 5");
                e.Cancel = true;
            }
       }
Но не знаю как в коде узнать количество записей, знаю что в sender передается текущий DataForm, в котором есть ItemsSource у которого есть свойства Count, но вот как получить к нему доступ не знаю подскажите пожалуйста, как?
...
Рейтинг: 0 / 0
Подготовка БД для работы в Silverlight Business Application
    #37219765
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
samun,

у вас есть DomainContext, в котором хранятся все данные, путь решения:
- создать метод в DomainService который будет возвращать Bool в ответ на вопрос "сколько у этого клиента заказов?", дергать этот метод перед заполнением формы;

в коде ловить ответ и дальше решать что с этим делать.
...
Рейтинг: 0 / 0
Подготовка БД для работы в Silverlight Business Application
    #37219779
samun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
уТКа,

Вот такая ситуация я в DataForm загрузил все заказы которые есть у клиента, предположим их 5, потом полистал и понял что надо добавить еще один, но т.к. максимум 5 то нужно удалить одни из заказов,
т.е. я предполагаю что в DataForm надо загрузить все заказы клиента, а патом выполнять с ними манипуляции.
тем более в DataForm реализовано и листание и добавление и удаление, можно провести все изменения заказов клиента и потом нажать сохранить.

Не подскажите как узнать количество сушностей в DataForm? (вернее в DataForm.ItemsSource?)
...
Рейтинг: 0 / 0
Подготовка БД для работы в Silverlight Business Application
    #37219838
samun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
уТКа,
А вот так нельзя получать количество записей в DataFrom?
Код: plaintext
<toolkit:DataForm AddingNewItem="dataForm1_AddingNewItem"> </toolkit:DataForm>
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
  private void dataForm1_AddingNewItem(object sender, DataFormAddingNewItemEventArgs e)
        {
            
            int i = ((DomainDataSourceView)((DataForm)sender).ItemsSource).Count;
            if (i > 5)
            {
                MessageBox.Show("Записей больше 5");
                e.Cancel = true;
            }
}

Если нет то почему ?
...
Рейтинг: 0 / 0
Подготовка БД для работы в Silverlight Business Application
    #37220005
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
samun,

повторю еще раз, у тебя есть DomainContext, все, что необходимо для работы находится там.

Код: plaintext
1.
domainContext.[заказы].Where(r => r.ClientId == [№_клиента]).Count();
...
Рейтинг: 0 / 0
Подготовка БД для работы в Silverlight Business Application
    #37220014
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уТКа,

но опять же, так лучше не делать, т.к. на момент проверки всех записей "на руках" может не оказаться.

Реализуй метод, который будет проверять количество заказов на сервере, а на клиента возвращать либо число, либо bool.
...
Рейтинг: 0 / 0
Подготовка БД для работы в Silverlight Business Application
    #37220020
samun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
уТКа,

ок. понял.
...
Рейтинг: 0 / 0
Подготовка БД для работы в Silverlight Business Application
    #37220257
samun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
уТКа,

Бывает что надо добавить в таблицу новое поле. И так получилось что уже для таблице сделано модель данных и DomainService, какие действия нужно предпринять для отображения поля в DataFrom?
Вот нашел в сети что надо делать, не подскажите это все действия ?
1 непосредственно добавить поле (в маем примере IdTender) в таблицу:

2 обновить модель данных из таблицы:

3 в файл [ имя DomainService].metadata.cs добавить поле в моем случае это
Код: plaintext
public int IdTender { get; set; }
4 если в клиентской части есть DataFrom для которого AutoGenerateFields="False" то в его шаблон добавить новую строку:
Код: plaintext
1.
2.
3.
<sdk:Label Content="Id Tender:" Grid.Column="0" Grid.Row="7" HorizontalAlignment="Left" Margin="3" VerticalAlignment="Center" />
<TextBox Grid.Column="1" Grid.Row="7" Height="23" HorizontalAlignment="Left" Margin="3" Name="idTenderTextBox" Text="{Binding 
Path=IdTender, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true, TargetNullValue=''}" VerticalAlignment="Center" 
Width="120" />
...
Рейтинг: 0 / 0
Подготовка БД для работы в Silverlight Business Application
    #37220409
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
samun,

все правильно, т.к. утилита для DomainService не позволяет обновлять метаданные, приходится именно ручками их дописывать.
...
Рейтинг: 0 / 0
Подготовка БД для работы в Silverlight Business Application
    #37221968
samun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
уТКа,

Вот такая ситуация нужно добавить в проект новую таблицу и связать с уже существующей, для этого в уже существующей таблице ProjectUser добавил поле IdTender:

Создал новую таблицу Tender с ключевым полем IdTender

Связал таблицы Tender и ProjectUser

Изменил модель данных


Теперь она выглядит вот так:

При сохранении VS ругается
авторОшибка 1 Ошибка 113: Недопустимое количество элементов в Role "Tender" в связи "FK_ProjectUser_Tender". Поскольку все свойства в Dependent Role не допускают значение null, количество элементов Principal Role должно быть "0..1".
Вот на это описание в файле модели данных:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<Association Name="FK_ProjectUser_Tender">
          <End Type="u215600Model2.Tender" Role="Tender" Multiplicity="1" />
          <End Type="u215600Model2.ProjectUser" Role="ProjectUser" Multiplicity="*" />
          <ReferentialConstraint>
            <Principal Role="Tender">
              <PropertyRef Name="IdTender" />
            </Principal>
            <Dependent Role="ProjectUser">
              <PropertyRef Name="IdTender" />
            </Dependent>
          </ReferentialConstraint>
</Association>
При создании новой модели данных этой ошибки нет.
И если сделать так:
1 Удалить модель данных
2 Создать новую модель данных с тем же именем
Скопировать из файла [Имя модели данных].Designer.cs
Имя создаваемого класса контекста в моем случае это
Код: plaintext
public partial class u215600Entities2 : ObjectContext
и в файле класса веб службы заменить на имя вновь созданного контекста
Код: plaintext
1.
[EnableClientAccess()]
    public class ProjectInOu : LinqToEntitiesDomainService<u215600Entities2>
Да и добавил несколько методов
Код: plaintext
1.
2.
3.
4.
5.
public IQueryable<Tender> GetTenders()
public IQueryable<Tender> GetTendersUser()
public void InsertTender(Tender tender)
public void UpdateTender(Tender currentTender)
public void DeleteTender(Tender tender)
ну и добавил Класс в файл метаданных.
то все работает.
Так вот вопрос как правильно поступать, если в схему данных нужно внести значительные изменения ?
...
Рейтинг: 0 / 0
Подготовка БД для работы в Silverlight Business Application
    #37222306
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
samun,

так я точно не делаю, пускай этим занимается предназначенный генератор Entity Framework :)

видимо у тебя в схеме допущена ошибка, попробуй на предмет ошибки погуглить.
...
Рейтинг: 0 / 0
Подготовка БД для работы в Silverlight Business Application
    #37223138
samun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
уТКа,

Ну у меня опять вопрос пока не нашел решения
для:
Код: plaintext
 <riaControls:DomainDataSource x:Name="pDomainDataSource"  />

можно добавить кнопку которая будет активна когда были внесены изменения в сушности например вот так:
Код: plaintext
<Button Name="button1" Command="{Binding ElementName=pDomainDataSource, Path=SubmitChangesCommand}"  />
Пока не понял как сделать кнопку что бы она была активна в обратной ситуации, т.е. активна только тогда когда данные не нужно сохранять т.е. IsEnabled новой кнопки был обратный button1 ?
есть ли свойство у DomainDataSource к которому можно Bindingом привязать Button.IsEnabled
Код: plaintext
IsEnabled="{Binding ElementName=pDomainDataSource, Path=???}"
...
Рейтинг: 0 / 0
Подготовка БД для работы в Silverlight Business Application
    #37223291
samun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
samun,
Ну как бы и ответ:
Код: plaintext
1.
2.
<Button Content="Cинхронизация" Name="button2"  Grid.Row="2" Margin="3" IsEnabled="{Binding ElementName=button1, Path=IsEnabled, Converter={StaticResource NotOperatorValueConverter}}" />
        <Button Content="Cинхронизация" Name="button2"  Grid.Row="2" Margin="3" IsEnabled="{Binding ElementName=projectUserDomainDataSource, Path=HasChanges, Converter={StaticResource NotOperatorValueConverter}}" />
Правильно нет?
...
Рейтинг: 0 / 0
Подготовка БД для работы в Silverlight Business Application
    #37223324
samun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
samun,

а если для вашего примера то вот так:
Код: plaintext
<toolkit:DataField Label="" Grid.Row="8" IsEnabled="{Binding Source={StaticResource DomainContext}, Path=HasChanges, Converter={StaticResource NotOperatorValueConverter}}">
Правильно нет ?
...
Рейтинг: 0 / 0
Подготовка БД для работы в Silverlight Business Application
    #37223350
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
samun,

авторПравильно нет ?
правильно (если там есть такое свойство), но привязку на DomainContext стоит делать, если ты уверен, что в соседнем окне глупый юзер не внесет изменения.
...
Рейтинг: 0 / 0
Подготовка БД для работы в Silverlight Business Application
    #37225718
samun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
уТКаsamun,

даже не знаю что и советовать :)

сам не прочитал ни одной книги, все по форумам, статьям, да практикум.
Мне помогла вместе с выше перечисленным книга Gill Cleeren, Kevin Dockx - Microsoft Silverlight 4 Data and Services Cookbook 2010.pdf
...
Рейтинг: 0 / 0
20 сообщений из 45, страница 2 из 2
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Подготовка БД для работы в Silverlight Business Application
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]