0

ユーザーが新しいレコードを作成するたびに、プログラムはデータがすでに作成されているかどうかをチェックする必要があるという問題が発生しました。私のコードには現在いくつかのエラーがあり、エラーが何であるかを見つけることができませんでした。誰か私に意見をいただけますか?ありがとう!

以下は、皆さんが私の問題についてより深く理解できるようにするためのコードです。

private void btnCreate_Click(object sender, EventArgs e)
    {
        using (satsEntities Setupctx = new satsEntities())
        {
            //int[] stations = StationNameList();
            //int[] locations = LocationNameList();
            locationstation ls = new locationstation();
            ls.stationID = Convert.ToInt32(cbStation.SelectedValue);
            ls.locationID = Convert.ToInt32(cbLocation.SelectedValue);

            var checkLS = from CLS in Setupctx.locationstations
                          where CLS.stationID == Convert.ToInt32(cbStation.SelectedValue)
                          where CLS.locationID == Convert.ToInt32(cbLocation.SelectedValue)
                          select CLS;
            if (checkLS = checked)
            {
                MessageBox.Show("This Location Station Has Been Created. Please enter a new Location Station.");
            }     
            else
                    {
                        {
                            Setupctx.locationstations.AddObject(ls);
                            Setupctx.SaveChanges();

                            cbStation.SelectedIndex = -1;
                            cbLocation.SelectedIndex = -1;

                            MessageBox.Show("New Location Station Is Created");
                        }
                    }
        }
    }

比較する必要のある列は配列に保存されました

private int[] LocationNameList()
    {
        using (satsEntities Setupctx = new satsEntities())
        {
            return Setupctx.locationstations.Select(x => x.locationID).OrderBy(x => x).ToArray();
        }
    }

    private int[] StationNameList()
    {
        using (satsEntities Setupctx = new satsEntities())
        {
            return Setupctx.locationstations.Select(y => y.stationID).OrderBy(y => y).ToArray();
        }
    }

どんな助けでも大歓迎です。

4

2 に答える 2

0

私が自分でそれを理解したので、この答えは私のために働いています。

private void btnCreate_Click(object sender, EventArgs e)
    {
        using (satsEntities Setupctx = new satsEntities())
        {
            locationstation ls = new locationstation();
            int Stations = Convert.ToInt32(cbLocation.SelectedValue);
            int Locations = Convert.ToInt32(cbStation.SelectedValue);
            ls.stationID = Convert.ToInt32(cbStation.SelectedValue);
            ls.locationID = Convert.ToInt32(cbLocation.SelectedValue);

            var AuthCheck = from Ls in Setupctx.locationstations
                            where (Ls.locationID == Stations && Ls.stationID == Locations)
                            select Ls;

            if (AuthCheck.Count() != 0)
            {
                MessageBox.Show("This Location Station Has Been Created. Please enter a new Location Station.");
            }     
            else
            {
                Setupctx.locationstations.AddObject(ls);
                Setupctx.SaveChanges();

                cbStation.SelectedIndex = -1;
                cbLocation.SelectedIndex = -1;

                MessageBox.Show("New Location Station Is Created");     
            }
        }
    }
于 2012-08-01T01:54:29.000 に答える
0

大雑把な方法は、これら 2 つの列に一意のインデックスを作成し、try/catch ブロックで保存を試みることです。

于 2012-08-01T01:45:17.520 に答える