🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.bazy-danych.msaccess
Article #137009

Re: Linia czasu zestawu danych

#137009
From: Maciej Tokarz
Date: Thu, 17 Sep 2015 21:29
95 lines
4328 bytes
Witaj!

Tak to jest jak się kombinuje przed poranną kawką ;-)
Wybrałem wariant jak poniżej (przepraszam, że zaśmiecę grupę inną składnią).
Generalnie co ważne, a również podkreśliłeś, mam możliwość kontrolowania momentu wdrożenia określonej wartości:

public sealed class Shift
    {
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public int Id { get; set; }

        public int Alias { get; set; }

        [StringLength(5)]
        public string Sign { get; set; }
        
        public bool IsValid { get; set; }
    }


public sealed class ShiftValue
    {
        [Key]
        [Column(Order = 0)]
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public int ShiftId { get; set; }

        [Key]
        [Column(Order = 1, TypeName = "date")]
        public DateTime ValidFrom { get; set; }

        [Column(TypeName = "date")]
        public DateTime? ValidTo { get; set; }

        public TimeSpan Start { get; set; }

        public TimeSpan Finish { get; set; }

        public Guid CreatedBy { get; set; }

        [Column(TypeName = "smalldatetime")]
        public DateTime Created { get; set; }

        public Shift Shift { get; set; }
    }

i przykład wykorzystania:

var shiftValue = ShiftValuesSource.First(x => x.ShiftId == id && D >= x.ValidFrom && D <= (x.ValidTo ?? DateTime.MaxValue));
var s = shiftValue.Start;
var f = shiftValue.Finish;

Dane wyglądają tak:

context.Shifts.AddOrUpdate(x => x.Id,
                new Shift()
                {
                    Id = 1,
                    Alias = 76,
                    Sign = "I",
                    IsValid = true
                },
                new Shift()
                {
                    Id = 2,
                    Alias = 77,
                    Sign = "II",
                    IsValid = true
                },

            context.ShiftValues.AddOrUpdate(x => x.ValidFrom,
                new ShiftValue()
                {
                    ShiftId = 1,
                    ValidFrom = new DateTime(2013,1,1),
                    ValidTo = null,
                    Start = new TimeSpan(6, 0, 0),
                    Finish = new TimeSpan(14, 0, 0),
                    CreatedBy = new Guid("87ef9940-af60-4002-9944-012a930148b5"),
                    Created = new DateTime(2015, 3, 21)
                },
                new ShiftValue()
                {
                    ShiftId = 2,
                    ValidFrom = new DateTime(2013, 1, 1),
                    ValidTo = null,
                    Start = new TimeSpan(14, 0, 0),
                    Finish = new TimeSpan(22, 0, 0),
                    CreatedBy = new Guid("87ef9940-af60-4002-9944-012a930148b5"),
                    Created = new DateTime(2015, 3, 21)
                },

Widzę, że nie tylko ja śledzę grupę :)
Serdecznie pozdrawiam,
Maciej
Technical Details
Message-ID: <b846f508-c0ae-4adb-bb16-5b634749525d@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!feeder.erje.net!1.eu.feeder.erje.net!usenet.blueworldhosting.com!feeder01.blueworldhosting.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!kq10no5760750igb.0!news-out.google.com!n2ni4085igy.0!nntp.google.com!kq10no4339241igb.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
References: <mtddld$75o$1@node2.news.atman.pl> <mtdvdh$9ci$1@news.albasani.net>

Show Full Headers
Complete Article Headers
X-Received: by 10.182.233.195 with SMTP id ty3mr1392065obc.44.1442525344292;        Thu, 17 Sep 2015 14:29:04 -0700 (PDT)
X-Received: by 10.50.79.193 with SMTP id l1mr85077igx.2.1442525344263; Thu, 17 Sep 2015 14:29:04 -0700 (PDT)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!feeder.erje.net!1.eu.feeder.erje.net!usenet.blueworldhosting.com!feeder01.blueworldhosting.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!kq10no5760750igb.0!news-out.google.com!n2ni4085igy.0!nntp.google.com!kq10no4339241igb.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.bazy-danych.msaccess
Date: Thu, 17 Sep 2015 14:29:03 -0700 (PDT)
In-Reply-To: <mtdvdh$9ci$1@news.albasani.net>
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=90.156.11.59; posting-account=woTZnAoAAACPjq3QRgCnaqbKSP8vIc3U
NNTP-Posting-Host: 90.156.11.59
References: <mtddld$75o$1@node2.news.atman.pl> <mtdvdh$9ci$1@news.albasani.net>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <b846f508-c0ae-4adb-bb16-5b634749525d@googlegroups.com>
Subject: Re: Linia czasu zestawu danych
From: Maciej Tokarz <mactok@my-poi.pl>
Injection-Date: Thu, 17 Sep 2015 21:29:04 +0000
Lines: 101
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit