UWP项目中EnitityFramework开源框架使用说明(二)

上一篇讲了EnitityFramework的包引用以及创建数据库和修改表结构的方法,这一篇主要讲一下对于数据库的操作。

首先,先添加界面内容,源码如下:

<Page
    x:Class="TestEntityFramework.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:TestEntityFramework"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:data="using:TestEntityFramework.Models"
    mc:Ignorable="d">

    <Grid Background="Gray">
        <RelativePanel  Width="400" HorizontalAlignment="Center">
            <StackPanel Name="EpEdits" Orientation="Vertical" Width="100" RelativePanel.AlignLeftWithPanel="True" RelativePanel.AlignRightWithPanel="True">
                <TextBox  Name="EpId"  PlaceholderText="id"/>
                <TextBox  Name="EpName"  PlaceholderText="姓名"/>
                <TextBox  Name="EpAge"  PlaceholderText="年龄"/>
                <TextBox  Name="EpSex"  PlaceholderText="性别"/>
            </StackPanel>
            <StackPanel Name="btnOper" RelativePanel.Below="EpEdits" Orientation="Horizontal" RelativePanel.AlignHorizontalCenterWith="EpEdits" Margin="20">
                <Button Content="添加" Click="btn_AddClick"/>
                <Button Content="更新" Click="btn_UpdateClick"/>
                <Button Content="删除" Click="btn_DelClick"/>
            </StackPanel>
            <Grid Name="List"  RelativePanel.Below="btnOper">
                <ListView Name="lstEmployees">
                    <ListView.ItemTemplate>
                        <DataTemplate x:DataType="data:employees">
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="100"/>
                                    <ColumnDefinition Width="100"/>
                                    <ColumnDefinition Width="100"/>
                                    <ColumnDefinition Width="100"/>
                                </Grid.ColumnDefinitions>
                                <TextBlock Grid.Column="0" Text="{x:Bind ID,Mode=OneWay}"/>
                                <TextBlock Grid.Column="1" Text="{x:Bind Name,Mode=OneWay}"/>
                                <TextBlock Grid.Column="2" Text="{x:Bind Sex,Mode=OneWay}"/>
                                <TextBlock Grid.Column="3" Text="{x:Bind Age,Mode=OneWay}"/>
                            </Grid>
                        </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>
            </Grid>

        </RelativePanel>
    </Grid>
</Page>

界面效果如下
这里写图片描述

添加一条记录

		/// <summary>
        /// 向数据库中添加一条记录
        /// </summary>
        private void btn_AddClick(object sender, RoutedEventArgs e)
        {
            using (var db = new EfDbContext())
            {
                var newEmployees = new employees
                {
                    ID = EpId.Text.Trim(),
                    Name = EpName.Text.Trim(),
                    Sex = EpAge.Text.Trim(),
                    Age = EpSex.Text.Trim()
                };

                EpId.Text = string.Empty;
                EpName.Text = string.Empty;
                EpAge.Text = string.Empty;
                EpSex.Text = string.Empty;
                try
                {
                    db.Employees.Add(newEmployees);
                    db.SaveChanges();
                }
                catch (Exception err)
                {
                    Debug.WriteLine("添加记录异常,错误:{0}",err.InnerException.Message);
                }

                lstEmployees.ItemsSource = db.Employees.ToList();
            }
        }

更新一条记录

		/// <summary>
        /// 更新记录
        /// </summary>
        private void btn_UpdateClick(object sender, RoutedEventArgs e)
        {
            using (var db = new EfDbContext())
            {
                var newEmployees = new employees
                {
                    ID = EpId.Text.Trim(),
                    Name = EpName.Text.Trim(),
                    Sex = EpAge.Text.Trim(),
                    Age = EpSex.Text.Trim()
                };

                EpId.Text = string.Empty;
                EpName.Text = string.Empty;
                EpAge.Text = string.Empty;
                EpSex.Text = string.Empty;
                try
                {
                    db.Employees.Update(newEmployees);
                    db.SaveChanges();
                }
                catch (Exception err)
                {
                    Debug.WriteLine("更新记录异常,错误:{0}", err.InnerException.Message);
                }

                lstEmployees.ItemsSource = db.Employees.ToList();
            }
        }

这里需要注意的是更新和新增的方法基本类似,只有调用api的时候有些区别。但是在新增前一定要判断主键是否存在,如果存在只能使用更新操作,如果不存在则要使用新增操作,否则程序会报错。

删除记录

		/// <summary>
        /// 删除记录
        /// </summary>
        private async void btn_DelClick(object sender, RoutedEventArgs e)
        {
            using (var db = new EfDbContext())
            {
                try
                {
                    var Red = db.Employees.Where(t => t.ID == "123").First();
                    if (Red != null)
                    {
                        db.Employees.Remove(Red);
                        db.SaveChanges();
                        lstEmployees.ItemsSource = db.Employees.ToList();
                    }
                }
                catch (Exception)
                {
                    MessageDialog dlg = new MessageDialog("没有找到id为123的员工", "错误");
                    await dlg.ShowAsync();
                }
            }
        }

判断条件使用LINQ的语法,这点需要注意的。

另外需要说明的是这个ORM框架把存储过程也封装进去了,如果需要批量操作可以使用响应的函数,例如新增多条记录可以使用AddRange方法,使用方法和Add类似,这里就不重复说明了。

怎么样,使用起来很简单吧。如有错误,欢迎各位大神指正!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然,我可以为你提供一个在UWP项目写自定义卡片组件的示例。是一个基本的示例: ```csharpusing Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Media; using Windows.UI.Xaml; namespace CustomCardComponent { public partial class CardComponent : { public CardComponent() this.InitializeComponent(); } // 自定义属性 public string Title { get { return titleLabel.Text; } set { titleLabel.Text = value; } } public string Description { get { return descriptionTextBlock.Text; } set { descriptionTextBlock.Text = value; } } public ImageSource Image { get { return image.Source; } set { image.Source = value; } } } } ``` 在XAML文件,你可以使用以下代码来定义卡片组件的外观和布局: ```xaml <UserControl x:Class="CustomCardComponent.CardComponent" ... > <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <TextBlock x:Name="titleLabel" Grid.Row="0" FontSize="16" FontWeight="Bold" VerticalAlignment="Center" HorizontalAlignment="Center"/> <Grid Grid.Row="1"> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <Image x:Name="image" Grid.Row="0" Stretch="UniformToFill"/> <TextBlock x:Name="descriptionTextBlock" Grid.Row="1" TextWrapping="Wrap" Margin="5"/> </Grid> </Grid> </UserControl> ``` 通过使用上述代码,你可以在UWP项目创建和使用自定义的卡片组件。你可以进一步根据你的需求来定制和扩展该组件。希望这可以帮助到你!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值